我想使用javascriptcallback更新javascript函数的输入。当从onAjaxEvent调用触发时,推送到客户端的addInput.js脚本中的javascript代码不会被执行,但是从afterRender调用时工作正常。
代码如下:
public void onAjaxEvent(final String input) {
ajaxResponseRenderer.addCallback(new JavaScriptCallback() {
public void run(JavaScriptSupport jss_) {
addInput(jss_, input);/* javascript never gets executed */
}
});
}
protected void addInput(JavaScriptSupport jss_, String input) {
JSONObject config = new JSONObject();
config = new JSONObject();
config.put("arg", input);
jss_.require("addInput").invoke("publicFunc").with(config);/* publicFunc never gets executed when called from onAjaxEvent but works fine when called from afterRender */
}
void afterRender() {
JSONObject config = new JSONObject();
javaScriptSupport.require("mainScript").with(config);
addInput(javaScriptSupport, "this call works fine");
}
addCallback-construct基于Tapestry 5.4 call jquery more than once
我在java1.7上使用tapestry5-jquery 4.0.0和tapestry5.4.0。这个问题似乎是特定于tapestry 5.4.0的,因为addInput是一个简单的addScript(“alert('it works!')”);工作得很好......
感谢您的反馈!