最も簡単な方法は、更新するコンポーネント自体に JS 関数呼び出しを配置することです。
<h:form>
...
<h:commandButton value="submit"><f:ajax render="@form" /></h:commandButton>
<h:outputScript>someFunction();</h:outputScript>
</h:form>
このようにして、ページが読み込まれたときに実行され、フォームが ajax によって更新された場合にも実行されます。
それ自体については、その属性<f:ajax>
を使用することもできます。onevent
<f:ajax ... onevent="handleAjax" />
と
function handleAjax(data) {
var status = data.status;
switch(status) {
case "begin":
// This is invoked right before ajax request is sent.
break;
case "complete":
// This is invoked right after ajax response is returned.
break;
case "success":
// This is invoked right after successful processing of ajax response and update of HTML DOM.
someFunction();
break;
}
}
機能要件がすべての ajax リクエストに適用される場合、すべての属性でjsf.ajax.addOnEvent()
それを指定する必要がないように、グローバル フックを追加できます。onevent
<f:ajax>
jsf.ajax.addOnEvent(handleAjax);
別の方法は、まさにこの目的のために提供されるOmniFaces JSF ユーティリティ ライブラリを使用することです。<h:onloadScript>
好きなように頭に置くことができます。
<h:onloadScript>someFunction();</h:onloadScript>
これは、ビューの ajax リクエストごとに自動的に再実行されるため、ajax 更新可能なビュー内の複数の個別の場所にコピーしたり、親 ID を毎回繰り返したりする必要はありません<f:ajax render>
。