web-dev-qa-db-ja.com

JSFはf:ajaxの後にjavascriptを実行します

私のJSF2 Webアプリケーションでは、次のコードを使用して、selectedStatusに従ってrich:dataTableのコンテンツを表示および切り替えます。

<h:selectOneRadio id="statusSelection" value="#{backingBean.selectedStatus}" style="width:auto; float:left;">
  <f:selectItem itemValue="AVAILABLE" itemLabel="Available" />
  <f:selectItem itemValue="INACTIVE" itemLabel="Inactive" />
  <f:ajax render="itemsDataTable" execute="#{backingBean.sortByTitel('ascending')}" />
  <f:ajax render="itemsDataTable" event="click" />
</h:selectOneRadio>

DataTableにはa4j:commandLinkが含まれています。これは、テーブルの内容を変更した後、一部のIEバージョンで意図せずにダブルクリックする必要があります-次のJavascriptコードを実行していることがわかりました(IEのデバッグコンソールで、テーブルの内容が変更されました)問題を解決します:

document.getElementById(<dataTableClientId>).focus()

私の質問は、テーブルの内容が変更された後、JavaScriptコードの自動実行を実現するにはどうすればよいですか?

11
Mr.Radar

f:ajaxの後にjsコードを呼び出すために、次のインラインソリューションが実行します

<f:ajax render="itemsDataTable" 
    onevent="function(data) { if (data.status === 'success') { 
    document.getElementById('dataTableClientId').focus() } }"/>

この答えも見てください: JSFとJquery AJAX-どうすればそれらを一緒に機能させることができますか?

また、event="click"f:ajaxの必要性を再確認してください。これにより、h:selectOneRadioのデフォルトイベントはchangeになります。

26
Daniel