我想在我的dataTable中添加一个inputText。此inputText将用于添加新用户(名称,角色,年龄)并将其保存到数据库。我还可以更新dataTable中的现有值。例如,假设我有这个dataTable。
我想要做的是在按钮单击时动态地将inputText字段添加到Table的第一行。我填写要插入的值并单击保存按钮。
我的想法是将editable="true"
添加到dataTable并使用<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用户添加到我的列表中,刷新dataTable,编辑新用户并将其保存在事件rowEdit
上。还有另外一种方法吗?
因为我面临的问题是由于我的复合身份证。当我输入新值时,我不知道我是否要更新或保存给定值。 (假设composite-id是Name和role。如果我想插入一个新值,然后我犯了一个错误并插入一个现有值,我将会有更新而不是错误消息)。
希望我足够清楚。如果没有,我可以提供更多信息。谢谢。
答案 0 :(得分:1)
我按照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>
工作正常。