使用JSF 2.0,Glassfish 3.2,Primefaces 2.2.1
我有一个包含多个复合组件的页面。在其中一个组件中,我有一个h:selectOneMenu。我试图添加f:ajax来在选择新值时调用方法。
以下是页面中的h:selectOneMenu组件:
<h:selectOneMenu id="selectRmDD" styleClass="editSelectRmDD" value="#{scheduleEditSessionBean.selectedRoom}" >
<f:selectItems id="roomList" value="#{scheduleEditSessionBean.roomList}"/>
<f:ajax listener="#{scheduleEditSessionBean.selectRmDD_processValueChange}" event="valueChange" render="@form" />
</h:selectOneMenu>
当我从h:selectOneMenu中选择一个新项时,将调用侦听器函数,但 selectedRoom 中的值为null。我也在调试器中看过这个,甚至AjaxBehaviorEvent中组件的submittedValue也是null。以下是选择新值时所调用的方法以及selectedRoom的定义:
public void selectRmDD_processValueChange( AjaxBehaviorEvent ae) {
String s = getSelectedRoom();
System.out.println( "Selected room = "+s );
if( s != null )applyRoomBtn_action();
}
private String selectedRoom = "1";
public String getSelectedRoom() { return this.selectedRoom; }
public void setSelectedRoom(String s) { this.selectedRoom = s; }
为什么价值没有填补的任何想法?
感谢。
答案 0 :(得分:1)
如果SelectItem
的{{1}}在处理表单提交时具有roomList
或空字符串作为值,则会发生这种情况。没有其他原因可以想到,null
Converter
可能没有正常工作,但这应该影响所有绑定到String.class
属性的输入。< / p>