1

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!')"); うまく動作します...

ご意見ありがとうございます!

4

0 に答える 0