为什么我的f:ajax不适用于h:selectOneMenu?

时间:2011-10-13 16:51:21

标签: ajax jsf-2

使用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; }

为什么价值没有填补的任何想法?

感谢。

1 个答案:

答案 0 :(得分:1)

如果SelectItem的{​​{1}}在处理表单提交时具有roomList或空字符串作为值,则会发生这种情况。没有其他原因可以想到,null Converter可能没有正常工作,但这应该影响所有绑定到String.class属性的输入。< / p>