私の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コードの自動実行を実現するにはどうすればよいですか?
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
になります。