2015-04-29 44 views
0

我想添加一個inputText到我的dataTable。這個inputText將用於添加一個新用戶(名稱,角色,年齡)並將其保存到數據庫中。我也可以更新dataTable中的現有值。例如,讓我們說我有這個數據表。帶inputText的可編輯數據表

enter image description here

我想要做的是動態添加的inputText字段的表的第一行上按一下按鈕。我填入要插入的值並單擊保存按鈕。

的想法我帶着是添加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用戶添加到我的列表,刷新數據表,編輯新用戶並將其保存在事件rowEdit中。有沒有另一種方法來做到這一點?

因爲我面臨的問題是由於我的composite-id。當我輸入新值時,我不知道是否要更新或保存給定值。 (假設composite-id是Name和Role,如果我想插入一個新的值,然後我犯了一個錯誤,並插入一個現有的值,我將有一個更新,而不是一個錯誤消息)。

希望我很清楚。如果不是,我可以提供更多信息。謝謝。

回答

0

我按照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> 

工作正常。