Jsf 具有p:cellEditor选项卡行为的p:dataTable

Jsf 具有p:cellEditor选项卡行为的p:dataTable,jsf,primefaces,datatable,tablecelleditor,Jsf,Primefaces,Datatable,Tablecelleditor,我有以下数据表结构: <p:dataTable editable="true" editMode="cell"..> <p:column headerText="value_1"> <p:cellEditor> <f:facet name="output"> <h:outputText ... </f:facet> <f:facet name="input">

我有以下数据表结构:

<p:dataTable editable="true" editMode="cell"..>

<p:column headerText="value_1">
  <p:cellEditor>
      <f:facet name="output">
         <h:outputText ...
      </f:facet>
      <f:facet name="input">
         <p:inputText ....
      </f:facet>
  </p:cellEditor>
</p:column>
<p:column headerText="value_2">
  <p:cellEditor>
      <f:facet name="output">
         <h:outputText ...
      </f:facet>
      <f:facet name="input">
         <p:inputText ....
      </f:facet>
  </p:cellEditor>
</p:column>
<p:column headerText="action">
  <p:commandButton tabindex="-1"...
</p:column>


PrimeFaces数据表单元格编辑器选项卡行为已实现:

检查第2244行。
next()
prev()
调用不会检查它是否是
.ui可编辑列
。因此,它基本上是盲目地搜索任何列,即使它不包含

因此,我们希望准确地修复该部分,以检查
.ui可编辑列
。将下面的代码放入JS文件中

if (PrimeFaces.widget.DataTable) {
    PrimeFaces.widget.DataTable = PrimeFaces.widget.DataTable.extend({
        tabCell: function(cell, forward) {
            var targetCell = forward ? cell.next('td.ui-editable-column') : cell.prev('td.ui-editable-column');
            if(targetCell.length == 0) {
                var tabRow = forward ? cell.parent().next() : cell.parent().prev();
                targetCell = forward ? tabRow.children('td.ui-editable-column:first') : tabRow.children('td.ui-editable-column:last');
            }

            this.showCellEditor(targetCell);
        }
    });
}
确保在PrimeFaces拥有JS后加载此JS文件。最佳位置如下所示:

<h:head>
    ...
</h:head>
<h:body>
    <h:outputScript name="primefaces-patches.js" target="head" />
    ...
</h:body>

...
...
另见:

我认为这个问题的真正答案是(尚未解决),但这不是你的解决方案,而是一种解释。对我来说,一个解决方案是复杂的(相对而言)创建,我不想创建这个答案尚未。。。(请发布版本信息)
<h:head>
    ...
</h:head>
<h:body>
    <h:outputScript name="primefaces-patches.js" target="head" />
    ...
</h:body>