【发布时间】:2016-10-20 18:33:28
【问题描述】:
我已经成功地为 jQuery AJAX using Resource mounting in Wicket 复制了这个 w3schools example。
但是,我仍然想知道是否有更好的方法来处理任意 AJAX 请求。
【问题讨论】:
我已经成功地为 jQuery AJAX using Resource mounting in Wicket 复制了这个 w3schools example。
但是,我仍然想知道是否有更好的方法来处理任意 AJAX 请求。
【问题讨论】:
如果您想对发送的内容进行低级控制。 AbstractAjaxBehavior 可能或多或少是您正在寻找的。你可以做类似的事情
public class MyAjaxBehavior extends AbstractAjaxBehavior{
@Override
public void onRequest() {
RequestCycle.get().scheduleRequestHandlerAfterCurrent(
new TextRequestHandler("application/json", "UTF-8", "{myVal:123}")
);
}
};
您可以将TextRequestHandler 替换为其他一些请求处理程序(或编写您自己的),以准确返回您想要的数据。
如果您想编写自己的 javascript 处理 ajax,您可以查看 Wicket Ajax wiki page,其中描述了如何手动调用此 ajax(您可以通过 AbstractAjaxBehavior#getCallbackUrl() 获取回调 URL)。
如果您真正想要的只是更新显示 - 用于更新检票口组件的高级 ajax 就是您想要的。大多数 Wicket Ajax 行为(如 AjaxEventBehavior)都附加了它们自己的 ajax 调用,您根本不需要做 javascript 方面的事情。您只需将组件添加到提供的AjaxRequestTarget,剩下的工作将由 wicket 完成,并自动更新组件显示的内容。
但是,这两种方法都可以访问页面,如果这不是您想要的,则可以使用资源装载。
【讨论】:
AbstractDefaultAjaxBehavior(我错误地将其放在 AbstractAjaxBehavior 旁边,而他们并没有真正做到一样)。我已经通过一个如何返回一些原始数据的示例修改了答案。