ListShuttle valueActionListener未被调用

时间:2014-02-07 10:38:41

标签: jsf richfaces

下面是我的listshuttle xhtml,其中包含转换器,我创建了转换器并且它读取了值,但是当我尝试为特定用户分配值时,listshuttle的“ValueActionListener”没有被调用。 请帮我解决这个问题,

下面是您参考的xhtml和java代码

<h:form id="listShuttleForm">

        <hr align="left" id="h1" style="!important; width: 250px; "/><br />
        <rich:listShuttle sourceValue="#{roleAction.availableUserGroupsList}" id="assignUserGroupListShuttleId"
            targetValue="#{roleAction.assignedUserGroupInfoList}" var="userGroupInfo" listsHeight="300"
            sourceListWidth="190" targetListWidth="200" sourceCaptionLabel=" #{localeValue.availableUserGroups}"
            targetCaptionLabel="#{localeValue.assignedUserGroups}" converter="userGroupConverter"
            valueChangeListener="#{roleAction.assignedUserGroupsListener}" ajaxRendered="true">

            <rich:column>
                <h:outputText value="#{userGroupInfo.groupName}"></h:outputText>
            </rich:column>
            <a4j:support event="onlistchanged"    reRender="msgId" />
            <a4j:support event="onorderchanged" reRender="msgId" />
        </rich:listShuttle>

        </h:form>

java代码: -

public String assignedUserGroupsListener(ValueChangeEvent event){
    System.out.println("inside assignedUserGroupListenerasdf");
    FacesContext fc = FacesContext.getCurrentInstance();
    Map<String, Object> sessionMap = fc.getExternalContext().getSessionMap();
    HtmlListShuttle listShuttle = (HtmlListShuttle)event.getComponent();
    sessionMap.put("assignedUserGroupInfoList", listShuttle.getTargetValue());
    return null;
}

所有建议都会非常明显。

提前谢谢。

1 个答案:

答案 0 :(得分:0)

ValueChangeListener或方法签名必须匹配

 public void valueChangeListener(javax.faces.event.ValueChangeEvent).   

如果更改了值,您的值更改侦听器将不会被触发,它将在您提交表单时触发。

更好
    <a4j:support event="onlistchanged"   
        actionLisener="#{roleAction.assignedUserGroupsListener}" reRender="msgId" />  

对于上面的动作侦听器,返回类型也应该是void。

希望这会有所帮助。