Как я могу получить значения из selectOneMenu внутри таблицы данных JSF?

У меня есть таблица данных JSF с кучей строк, в каждой строке есть selectOneMenu внутри, например:

    <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

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

Спасибо!


person Community    schedule 12.06.2009    source источник


Ответы (2)


Я вижу, что ваша таблица имеет привязку к вашему компоненту. В вашем компоненте вы можете использовать метод 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()

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

person Chris Dale    schedule 17.06.2009

В форме нет очевидных ошибок — если ваш метод сохранения не вызывается, попробуйте добавить сообщения в вашей форме, чтобы помочь отследить источник проблемы. Было бы полезно, если бы вы разместили образец bean-компонента, который воспроизводит проблему, и укажите реализацию JSF и версию, которую вы используете.

person McDowell    schedule 14.06.2009