Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf Richfaces 4.5拾取列表,右侧有重复项_Jsf_Richfaces_Picklist - Fatal编程技术网

Jsf Richfaces 4.5拾取列表,右侧有重复项

Jsf Richfaces 4.5拾取列表,右侧有重复项,jsf,richfaces,picklist,Jsf,Richfaces,Picklist,环境: <rich:pickList id="AssignRole" value="#{staffResourceRolesTargetList}" sourceCaption="Roles" targetCaption="Assigned Roles" listHeight="120" converter="#{org.jboss.seam.ui.EntityConverter}" orderable="false"> <f:selectItems value="#{

环境:

<rich:pickList id="AssignRole" value="#{staffResourceRolesTargetList}" sourceCaption="Roles" targetCaption="Assigned Roles" listHeight="120"
converter="#{org.jboss.seam.ui.EntityConverter}" orderable="false">
    <f:selectItems value="#{staffResourceRolesSourceList}"
        var="assignRoles" itemLabel="#{assignRoles.name}" />
    <f:selectItems value="#{staffResourceRolesTargetList}"
        var="assignedRoles" itemLabel="#{assignedRoles.name}" />
</rich:pickList>
Jboss 7.1.1.Final JSF2.2.6 接缝2.3.1.最终 Richfaces 4.5.10.1决赛

问题:

<rich:pickList id="AssignRole" value="#{staffResourceRolesTargetList}" sourceCaption="Roles" targetCaption="Assigned Roles" listHeight="120"
converter="#{org.jboss.seam.ui.EntityConverter}" orderable="false">
    <f:selectItems value="#{staffResourceRolesSourceList}"
        var="assignRoles" itemLabel="#{assignRoles.name}" />
    <f:selectItems value="#{staffResourceRolesTargetList}"
        var="assignedRoles" itemLabel="#{assignedRoles.name}" />
</rich:pickList>
在第二次加载弹出窗口期间,rich:picklist用重复项填充右侧。以下是复制的步骤

  • 通过单击主页中的链接加载带有rich:picklist的PoupPage
  • 弹出页面加载rich:picklist,其中填充了右侧和左侧值
  • 值从拾取列表的左侧添加到右侧,并保存弹出窗口
  • 现在,当我们重新打开弹出窗口时,选择列表的右侧有重复的值
  • XHTML代码片段:

    <rich:pickList id="AssignRole" value="#{staffResourceRolesTargetList}" sourceCaption="Roles" targetCaption="Assigned Roles" listHeight="120"
    converter="#{org.jboss.seam.ui.EntityConverter}" orderable="false">
        <f:selectItems value="#{staffResourceRolesSourceList}"
            var="assignRoles" itemLabel="#{assignRoles.name}" />
        <f:selectItems value="#{staffResourceRolesTargetList}"
            var="assignedRoles" itemLabel="#{assignedRoles.name}" />
    </rich:pickList>
    
    
    
    注意:

    <rich:pickList id="AssignRole" value="#{staffResourceRolesTargetList}" sourceCaption="Roles" targetCaption="Assigned Roles" listHeight="120"
    converter="#{org.jboss.seam.ui.EntityConverter}" orderable="false">
        <f:selectItems value="#{staffResourceRolesSourceList}"
            var="assignRoles" itemLabel="#{assignRoles.name}" />
        <f:selectItems value="#{staffResourceRolesTargetList}"
            var="assignedRoles" itemLabel="#{assignedRoles.name}" />
    </rich:pickList>
    
    • 我已经在picklist中使用的实体中重写了hashcode和equals方法
    • 我必须使用两个f:selectItems列表,以便右侧进行预填充
    • 源列表和目标列表属于同一实体集合

    请帮我调试这个。我花了很多时间,希望有人能给我指引方向。如果您需要更多信息,请告诉我。

    请查看此处,我想这可能有助于您重新打开弹出窗口时,目标集合不是
    clear()
    ,并且
    collection.add()
    再次被调用。感谢Geinmachi和Mahendran的回复。我将尝试这些并发回我的结果。我无法在java端解决,因为集合看起来就在加载弹出窗口之前。因此,我最终使用jQuery进行了黑客攻击,并在加载弹出窗口后删除了重复项。希望它能帮助别人。