selectOneMenu不会更改Bean对象的值

时间:2019-03-28 09:10:59

标签: 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.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值的值。我已经检查了我是否具有适当的getter和setter方法。 selectedAttr的值保持为空,而searchText值更改。

当前输出如下:

output

2 个答案:

答案 0 :(得分:1)

您未指定要与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"

执行周围的表格

另请参见

答案 1 :(得分:0)

尝试一下:

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