我在我的项目中使用PrimeFaces的pickList组件。但问题是动作函数永远不会被调用。
<p:pickList id="pickList" value="#{pickListBean.names}" var="name"
itemLabel="#{name}itemValue="#{name}" />
<p:commandButton ajax="false" id="submit" value="Submit" type="submit"
action="#{pickListBean.performAction}" />
我的托管bean如下:
@ManagedBean(name="pickListBean")
@SessionScoped
public class PickListBean {
private DualListModel<String> names;
private List<String> nam1;
private List<String> nam2;
public PickListBean() {
nam1 = new ArrayList<String>();
nam2 = new ArrayList<String>();
nam1.add("Ammar");
nam1.add("Nisar");
nam1.add("Khalid");
nam1.add("Haris");
nam1.add("Yasir");
names = new DualListModel<String>(nam1, nam2);
}
public DualListModel<Player> getPlayers() {
return players;
}
public void setPlayers(DualListModel<Player> players) {
this.players = players;
}
public DualListModel<String> getNames() {
return names;
}
public void setNames(DualListModel<String> names) {
this.names = names;
}
public String performAction()
{
for (Iterator iterator = nam2.iterator(); iterator.hasNext();) {
String name = (String) iterator.next();
System.out.print("\t" + name);
}
return "";
}
}
我会感谢您的帮助。
答案 0 :(得分:0)
首先,选择列表和命令按钮是否嵌套在表单中?检查动作是否有效,将println从for循环中取出,因为它可能是你永远不会到达那里的
public String performAction() {
System.out.println("works");
}
答案 1 :(得分:0)
要获取所选值,请使用names.getTarget()并获取选择列表。
答案 2 :(得分:0)
那好吧!所以问题不是因为你的动作按钮有效,你想知道如何从双列表中检索数据,我是否理解正确?如果是这样,那么要获得双重列表中的每个位置,您必须
public void performAction(){
String sor;
String tar;
sor=names.getSource().get(i);
tar=names.getTarget().get(i);
System.out.println("works"+sor+tar);
}
其中i是从上方开始的列表中当前位置的数量(因此,如果i = 0,则获得每个列表的最高位置)使用简单的for循环,u可以迭代以获取所有条目。此外,如果你需要使用迭代器,我想你可以使用names.getSource()。iterator()和getTarget()相同。除了迭代器,我尝试了上面的解决方案,它起作用,所以我希望它可以帮助你。