ミックスインのライフサイクルに精通している誰かが私にアドバイスしてもらえますか:
(タペストリー 5.3.6 を使用)
「afterRender」からいくつかの JavaScript をトリガーする mixin があります。フィールドの clientId を初期化する必要があるため、「afterRender」でこれを行います。
ページが最初にレンダリングされるときにフィールドがレンダリングされる場合はうまく機能しますが、ゾーン更新/xhr 要求の一部としてレンダリングされる場合、スクリプトはクライアントに送信されません。
JavaScriptCallback にブレークポイントを設定しましたが、ajaxResponseRenderer に正常に追加されていますが、呼び出されることはありません。
アドバイスをありがとう!
コード例:
public class MyMixin
{
...
void afterRender()
{
addScript("MyMixin.create('%s', '%s');", field.getClientId(), myVariable);
}
private void addScript(final String format, final Object... args)
{
if (!request.isXHR())
{
jsSupport.addScript(InitializationPriority.NORMAL, format, args);
return;
}
ajaxResponseRenderer.addCallback(new JavaScriptCallback()
{
@Override
public void run(JavaScriptSupport javascriptSupport)
{
javascriptSupport.addScript(InitializationPriority.NORMAL, format, args);
}
});
}
}