Jsf 编辑p:datatable whth String ArrayList

Jsf 编辑p:datatable whth String ArrayList,jsf,primefaces,Jsf,Primefaces,我有一个问题:如果从ArrayList构建一个p:datatable,则无法进行编辑,有时行选择不触发。 我的xhtml代码: <h:form id="form"> <p:messages id="messageWiz" showDetail="true" closable="true" autoUpdate="true"/> <h:panelGroup> <p:commandButton id="addP

我有一个问题:如果从ArrayList构建一个p:datatable,则无法进行编辑,有时行选择不触发。 我的xhtml代码:

      <h:form id="form">
     <p:messages id="messageWiz" showDetail="true" closable="true" autoUpdate="true"/>
     <h:panelGroup>
        <p:commandButton id="addPattern" icon="ui-icon-add"
           actionListener="#{testController.add}" process="@this"
           update="patternsId" />
        <p:commandButton id="deletePattern" icon="ui-icon-delete"
           actionListener="#{testController.remove}"
           process="@this" update="@this, patternsId"
           disabled="#{empty testController.patternsSelected}" />
     </h:panelGroup>
     <p:dataTable id="patternsId" var="pattern" scrollable="true" scrollHeight="200"
        value="#{testController.patterns}" editable="true"
        editMode="cell" widgetVar="patterns" rowIndexVar="idx"
        selection="#{testController.patternsSelected}"
        rowKey="#{pattern}"
        emptyMessage="#{label['msg.emptytable']}" styleClass="nofooter">
           <p:ajax event="rowSelect" update=":form:deletePattern" />
           <p:ajax event="rowUnselect" update=":form:deletePattern" />
           <p:ajax event="rowSelectCheckbox" update=":form:deletePattern"/>
           <p:ajax event="toggleSelect" update=":form:deletePattern" />
           <p:ajax event="rowUnselectCheckbox" update=":form:deletePattern" />
           <p:ajax event="cellEdit" update=":form:messageWiz" />
        <p:column selectionMode="multiple" width="20" />
        <p:column>
           <p:cellEditor>
              <f:facet name="output">
                 <h:outputText value="#{pattern}" />
              </f:facet>
              <f:facet name="input">
                 <p:inputText value="#{pattern}"
                    required="true" style="width:96%" autocomplete="off" />
              </f:facet>
           </p:cellEditor>
        </p:column>
     </p:dataTable>

  </h:form>
控制器代码:

@ManagedBean
@ViewScoped
public class TestController implements Serializable {
   private static final long serialVersionUID = 1L;


   private ArrayList<String> patterns = new ArrayList<String>();
   private ArrayList<String> patternsSelected;


    public ArrayList<String> getPatterns() {
       return patterns;
    }

   public void setPatterns(ArrayList<String> patterns) {
      this.patterns = patterns;
   }

   public ArrayList<String> getPatternsSelected() {
      return patternsSelected;
   }

   public void setPatternsSelected(ArrayList<String> patternsSelected) {
      this.patternsSelected = patternsSelected;
   }

   public void add() {
      patterns.add(new String());

   }
   public void remove() {

   }


}

添加行并编辑,然后关闭编辑结束输入值消失,行选择不触发。

使用字符串数组列表无法实现这一点

必须实现至少具有id和值成员的模式对象列表 支持bean testController必须实现SelectableDataModel唯一ID,这将有助于确保识别和删除正确的项。