【问题标题】:ListShuttle valueActionListener Not getting calledListShuttle valueActionListener 没有被调用
【发布时间】:2014-02-07 10:38:41
【问题描述】:

下面是我的 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;
}

所有的建议都将是非常可观的。

提前谢谢你。

【问题讨论】:

    标签: jsf richfaces


    【解决方案1】:

    ValueChangeListener 或方法签名必须匹配

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

    并且您的值更改侦听器不会在值更改后立即触发,它将在您提交表单时触发。所以最好有

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

    对于上述动作监听器,返回类型也应该是无效的。

    希望这会有所帮助。

    【讨论】:

    • 你把方法返回类型改成void了吗?
    • 是的 Srikanth...但是我没有重写 Object 类的 equals 方法...所以它不起作用,现在它起作用了。感谢您的帮助 Srikanth
    • 很高兴您的问题得到解决。我希望您正在通过 a4j:support 上的 actionListener 而不是 valueChangeeListener ,因为我提到了答案。 :)
    • 现在我知道你的 ValueChangeListner 正在工作,因为你的 a4j:support ob 事件 onlistchanged。如果您删除那些 a4j:support 标记,那么在您提交表单之前不会调用您的 ValueChangeListner。反正你的问题解决了。但提醒这个事实以备不时之需。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    • 2011-11-15
    • 1970-01-01
    • 1970-01-01
    • 2018-11-25
    • 2019-03-31
    相关资源
    最近更新 更多