Как я могу получить значения из selectOneMenu внутри таблицы данных JSF? - PullRequest
4 голосов
/ 13 июня 2009

У меня есть таблица данных 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. У кого-нибудь есть пример кода, который делает это?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 17 июня 2009

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

1 голос
/ 14 июня 2009

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

...