我在调用wicket ajax的java脚本页面中有以下函数:
function callWicketPage() {
wicketAjaxGet(
urlCallback,
function() {alert('success'); },
function() { alert('failed');
});
}
在wicket页面中,我执行以下操作:
final AbstractDefaultAjaxBehavior behave = new AbstractDefaultAjaxBehavior() {
@Override
public void renderHead(IHeaderResponse ihr) {
super.renderHead(ihr);
ihr.renderJavascript("var urlCallback = '" + this.getCallbackUrl() + "';", "insertedjavascript");
}
protected void respond(final AjaxRequestTarget target) {
}
};
add(behave);
我想要的是将wicket页面的json响应发送回JavaScript,我该怎么办?
答案 0 :(得分:1)
我建议您使用ResourceReference
,这样您就不必获得对页面实例的读/写访问权限(并安装它以便从客户端脚本中轻松访问)。
但是如果你想保持基于行为的解决方案:
class JsonBehavior extends AbstractDefaultAjaxBehavior {
@Override
protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
super.updateAjaxAttributes(attributes);
// please define the channel type (default: queue)
attributes.setChannel(new AjaxChannel("json"));
}
@Override
protected void respond(AjaxRequestTarget target) {
RequestCycle rc = RequestCycle.get();
rc.replaceAllRequestHandlers(new TextRequestHandler("application/json", "UTF-8", "{'json':'content'}"));
}
}