javascriptcallback を使用して、javascript 関数への入力を更新したいと考えています。クライアントにプッシュされる addInput.js スクリプトの JavaScript コードは、onAjaxEvent 呼び出しからトリガーされたときに実行されませんが、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 に基づいてjquery を複数回呼び出す
java1.7 で tapestry5-jquery 4.0.0 と tapestry5.4.0 を使用しています。addInput が単純な addScript("alert('it works!')"); うまく動作します...
ご意見ありがとうございます!