我想知道是否有人可以请求帮助。我正在经历一个挑战。当我在我的支持bean中做这样的事情时,它可以正常工作:
private String [] testRight;
private String [] testLeft; (with getters and setters)
public void initalizeLeftRightSide2()
{
this.testLeft = new String[5];
this.testRight = new String[2];
testLeft[0] = "module1";
testLeft[1] = "module2";
testLeft[2] = "module3";
testLeft[3] = "module4";
testLeft[4] = "module5";
testRight[0] = "module2";
testRight[1] = "module4";
}
但是当我使用我的Module对象时,右边没有填充:
private List<Modules> allModules;
private List<Modules> forSelectedRole;
public void initalizeLeftRightSide3(Long selectedRoleID)
{
this.allModules = modRole.getAllModules();
Roles theRole = modRole.getModuleListByRoleID(selectedRoleID);
this.forSelectedRole = theRole.getModulesLst();
}
初始化pickList的我的JSF就是这个,实现了一个转换器:
<rich:pickList value="#{addModuleToRole.forSelectedRole}" sourceCaption="Available Modules" targetCaption="Selected Modules" listWidth="200px" listHeight="200px" >
<f:selectItems value="#{addModuleToRole.allModules}" var="moules" itemValue="#{moules}" itemLabel="#{moules.name}" />
<f:converter converterId="modulesConverter" />
</rich:pickList>
添加forSelectedRole只是allModules的一个子集。
提前感谢您的任何帮助。
除了Vasil的评论之外,我将initalizeLeftRightSide3(rSelected)方法称为更新附加到特定角色的模块的过程的第二阶段。第一阶段是让用户选择要更新的角色,然后提交给以下代码。
public void processAddModule2Role() {
//First get the role selected
Long rSelected = Long.parseLong(getSelectedRole());
initalizeLeftRightSide3(rSelected);
//redirect to addModuleToRole2.xhtml which contains the pickList
sh.redirect2("/pages/admin/rolemgmt/addModuleToRole2.xhtml");
}
再次感谢。