Jsf selectOneMenu不会更改bean对象的值

Jsf selectOneMenu不会更改bean对象的值,jsf,javabeans,onchange,managed-bean,selectonemenu,Jsf,Javabeans,Onchange,Managed Bean,Selectonemenu,因此,我有以下代码: <h:inputText value = "#{listAllBookings.searchText}"> <f:ajax listener="#{listAllBookings.printValues()}" event="keyup" render="myTable"/> </h:inputText> <h:selectOneMenu value="#{listAllBookings.selecte

因此,我有以下代码:

<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>
正如你所看到的,上面的代码非常简单。 问题是我无法更改selectedAttr值的值。我已经检查了是否有适当的getter和setter方法。 selectedAttr的值保持为空,而searchText值更改

当前输出如下所示:

试试这个:

<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>

您没有指定要在ajax请求中执行的组件。因此,只执行textfield

将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执行周围的表单

另见


OP并没有为我们所知的所有可能的副本使用PrimeFaces
<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>