2015-04-29 7 views
0

Я хочу добавить inputText к моей dataTable. этот inputText будет использоваться для добавления нового пользователя (Name, Role, Age) и сохранения его в базе данных. я могу обновить существующие значения в dataTable. Например, допустим, у меня есть этот dataTable.Редактируемый 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 в мой список, обновить DataTable, редактировать новый пользователь и сохраните его на событии rowEdit. есть ли другой способ сделать это?

Потому что проблема, с которой я сталкиваюсь, связана с моим составным идентификатором. когда я ввожу новое значение, я не могу знать, буду ли я обновлять или сохранять заданное значение. (предположим, что составной идентификатор - это имя и роль. Если я хочу вставить новое значение, а затем я сделаю ошибку и вставляю существующее значение, у меня будет обновление вместо сообщения об ошибке).

Надеюсь, что я достаточно ясен. если нет, я могу предоставить больше информации. Спасибо.

ответ

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> 

Работы хорошо.

Смежные вопросы