selectOneMenu не изменяет значение объекта bean - PullRequest
0 голосов
/ 28 марта 2019

Итак, у меня есть следующий код:

<h:inputText value = "#{listAllBookings.searchText}">
  <f:ajax listener="#{listAllBookings.printValues()}" event="keyup" render="myTable"/>
</h:inputText>             
<h:selectOneMenu value="#{listAllBookings.selectedAttr}">
  <f:selectItem itemLabel="GUEST" itemValue="GUEST"/>
  <f:selectItem itemLabel="HOTEL" itemValue="HOTEL"/>
</h:selectOneMenu>

И мой метод printValues:

public void printValues() {
    System.out.println("searchText:"  + searchText + " and selectedAttr: " + selectedAttr);
}

Так что, как вы можете видеть, приведенный выше код довольно прост.Проблема в том, что я не могу изменить значение selectedAttr.Я уже проверил, есть ли у меня соответствующие методы получения и установки.Значение selectedAttr остается нулевым, в то время как значение searchText изменяется.

Текущий вывод выглядит следующим образом:

output

Ответы [ 2 ]

1 голос
/ 28 марта 2019

Вы не указали компонент для выполнения с вашими ajax запросами.Таким образом, выполняется только текстовое поле.

Добавьте id к selectOneMenu и выполните его:

<h:inputText value="#{listAllBookings.searchText}">
  <f:ajax listener="#{listAllBookings.printValues()}" event="keyup" render="myTable"
  execute="@this selectSomething"/>
</h:inputText>             
<h:selectOneMenu id="selectSomething" value="#{listAllBookings.selectedAttr}">
  <f:selectItem itemLabel="GUEST" itemValue="GUEST"/>
  <f:selectItem itemLabel="HOTEL" itemValue="HOTEL"/>
</h:selectOneMenu>

Но вы также можете выполнить окружающую форму через execute="@form"

См. Также

0 голосов
/ 28 марта 2019

попробуйте это:

<h:selectOneMenu value="#{listAllBookings.selectedAttr}">
<f:ajax event="change" listener="#{listAllBookings.printValues()}" />
  <f:selectItem itemLabel="GUEST" itemValue="GUEST"/>
  <f:selectItem itemLabel="HOTEL" itemValue="HOTEL"/>
</h:selectOneMenu>
...