带有inputText的可编辑dataTable

时间:2015-04-29 12:08:39

标签: jsf primefaces

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

enter image description here

我想要做的是在按钮单击时动态地将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。如果我想插入一个新值,然后我犯了一个错误并插入一个现有值,我将会有更新而不是错误消息)。

希望我足够清楚。如果没有,我可以提供更多信息。谢谢。

1 个答案:

答案 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>

工作正常。