带有 inputText 的可编辑数据表

Editable dataTable with inputText

我想向我的数据中添加一个 inputTextTable。此 inputText 将用于添加新用户(姓名、角色、年龄)并将其保存到数据库中。我还可以更新数据 Table 中的现有值。例如,假设我有这个数据Table.

我想做的是在单击按钮时将 inputText 字段动态添加到 Table 的第一行。我填写要插入的值并单击保存按钮。

我的想法是将 editable="true" 添加到数据 Table 并像这样使用 <p:cellEditor><p:rowEditor/>

<p:dataTable var="item" value="#{userControler.users}" editable="true">

    <p:column>
        <p:cellEditor>
            <f:facet name="output">
                <h:outputText value="#{item.name}"/>
           </f:facet>
           <f:facet name="input">
                <p:inputText value="#{item.name}" style="width:100%"/>
           </f:facet>
        </p:cellEditor>
    </p:column>

   <p:column>
       <p:rowEditor  />
    </p:column>
</p:dataTable>

然后在我的列表中添加一个新的 epmty 用户,刷新数据Table,编辑新用户并将其保存在事件 rowEdit 上。还有另一种方法吗?

因为我面临的问题是由于我的复合 ID。当我输入新值时,我不知道我是要更新还是保存给定值。 (假设 composite-id 是名称和角色。如果我想插入一个新值,然后我犯了一个错误并插入了一个现有值,我将进行更新而不是错误消息)。

希望我说得够清楚了。如果没有我可以提供更多information.Thank你。

我按照 BalusC 的建议做了。

<p:dataTable var="item" value="#{userControler.users}" editable="true">

    <p:column>
        <p:cellEditor>
            <f:facet name="output">
                <h:outputText value="#{item.name}"/>
           </f:facet>
           <f:facet name="input">
                <p:inputText value="#{item.name}" style="width:100%"/>
           </f:facet>
        </p:cellEditor>
           <f:facet name="footer">
              <p:inputText value="#{userControler.newUser.name}" />
           </f:facet>
    </p:column>

   <p:column>
       <p:rowEditor />
       <f:facet name="footer"><p:commandButton action="#{userControler.add}"/></f:facet>
    </p:column>
</p:dataTable>

工作正常。