選択した列のインデックスをjQueryで見つけて、ajaxイベントとしてサーバーに送信できます
ここに方法があります:
inputText
最初にテーブルの上に追加します(非表示にします)
<h:inputText id="mySelectedColumnId" value="#{myBean.mySelectedColumnField}" style="display:none">
<f:ajax listener="#{myBean.myListener}"></f:ajax>
</h:inputText>
そして、次のjsコードをバインドして、テーブルをクリックし、クリックをトリガーします。h:inputText
これにより、サーバーでリッスンがトリガーされます。
jQuery(document).delegate("#yourTableID td", "click", function (event) {//bind every click on any td in the table
var columnNumber = jQuery(this).index();//get index of clicked row
jQuery("#mySelectedColumnId").val(columnNumber); //set value in the inputtext
jQuery("#mySelectedColumnId").change(); //this will trigger the ajax listener
});
アップデート
私が実際に意味したのは、次の構造でした。
<h:outputScript name="js/newjavascriptfile.js" target="head" />
.
.
.
.
<h:form prependId="false">
<h:inputText id="mySelectedColumnId" value="#{myBean.mySelectedColumnField}" style="display:none">
<f:ajax listener="#{myBean.myListener}"></f:ajax>
</h:inputText>
<p:dataTable id="DataTable"....
.
.
.
.
およびjs内(Webアプリフォルダーのルートにあるresourcesフォルダー内のjsフォルダー内に配置します。Resources (Library)In JSF 2.0)ファイルの場所
jQuery(window).load(function () {
jQuery(document).delegate("#yourTableID td", "click", function (event) {//bind every click on any td in the table
var columnNumber = jQuery(this).index();//get index of clicked row
jQuery("#mySelectedColumnId").val(columnNumber); //set value in the inputtext
jQuery("#mySelectedColumnId").change(); //this will trigger the ajax listener
});
});