2009-06-12 6 views
4

У меня есть JSF DataTable с кучей строк, причем каждая строка, имеющий selectOneMenu внутри него, как это:Как я могу получить значения из selectOneMenu внутри JSF datatable?

<h:form 
     <h:dataTable id="myTable" 
     binding="#{myBean.dataTable}" 
     value="#{myBean.dataTableRows}" var="row" 
     first="0" rows="0" dir="LTR" frame="hsides" rules="all"> 

     <h:column> 
      <f:facet name="header"> 
      <h:outputText value="Sample Name" /> 
      </f:facet> 
      <h:outputText value="#{row.sampleName}" /> 
     </h:column> 

     <h:column> 
      <f:facet name="header"> 
      <h:outputText value="Role" /> 
      </f:facet> 
      <h:selectOneMenu value="#{row.role}" 
      id="roleInput"> 
      <f:selectItems value="#{myBean.allRoles}" /> 
      </h:selectOneMenu> 
     </h:column> 

     </h:dataTable> 

     <h:commandButton value="Save" action="#{myBean.save}" /> 
    </h:form> 

Однако, я не могу показаться, чтобы выяснить, как получить выбранную роль из каждого строка в методе сохранения. Другими словами, я хочу сохранить значение каждой строки. Я видел эту статью, в которой объясняется, как сохранить текстовое поле ввода:

http://balusc.blogspot.com/2006/06/using-datatables.html#EditableDatatable

но это, кажется, не применяются к ч: selectOneMenu случае. Есть ли у кого-нибудь пример кода, который это делает?

Спасибо!

ответ

2

Я вижу, что ваш стол имеет привязку к вашему bean-компоненту. В вашем компоненте вы можете использовать метод getDataTable() и получить к нему доступ. Java док говорит:

public Object getRowData() 

Return the data object representing the data for the currently selected row index, if any. 

Так что, если вы делаете ваш код:

List<String> selectedRowData = (List<String>) getDataTable().getRowData() 

Вы можете получить доступ все поля выбрал пользователь. Я использую это в своем собственном проекте и его работе. Единственное отличие заключается в том, что Im литье в моем собственном типе вместо List<String>

1

В форме нет очевидных ошибок: если ваш метод сохранения не вызывается, попробуйте добавить тэг messages в форму, чтобы помочь отслеживать источник проблемы. Это поможет, если вы разместите образец компонента, который воспроизводит проблему, и укажите реализацию и версию JSF, которые вы используете.

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