selectOneMenu 不改变bean对象的值
selectOneMenu does not change the value of the bean object
所以我有以下代码:
<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 值发生变化。
当前输出如下所示:
试试这个:
<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
请求指定要执行的组件。所以只有文本框被执行。
在selectOneMenu
中添加一个id
并执行:
<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"
执行周围的表格
另见
- Understanding PrimeFaces process/update and JSF f:ajax execute/render attributes
所以我有以下代码:
<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 值发生变化。
当前输出如下所示:
试试这个:
<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
请求指定要执行的组件。所以只有文本框被执行。
在selectOneMenu
中添加一个id
并执行:
<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"
另见
- Understanding PrimeFaces process/update and JSF f:ajax execute/render attributes