我想制作简单的DropDownList。
<p:selectOneMenu id="starter" value="#{reportRegisterManagedBean.starter}" style="width:160px" converter="#{reportStarterConverter}" required="true" requiredMessage="Select Report Starter">
<ui:repeat value="#{reportRegisterManagedBean.startersSelectItems}" var="dss">
<f:selectItem itemLabel="#{dss}" itemValue="#{dss}" itemDescription="TEST" />
</ui:repeat>
</p:selectOneMenu>
DropDownList
很简单,如果我使用<f:selectItems>
代替<ui:repeat>
效果很好,但是<f:selectItems>
组件itemDescription
=(这是简单的工具提示类比)不工作<f:selectItem>
组件itemDescription
=(这是简单的工具提示类比)工作正常。这就是我决定使用<f:selectItem>
及其itemDescription
属性的原因。
答案 0 :(得分:2)
在视图构建期间需要添加<f:selectItem>
。但是,<ui:repeat>
在视图渲染时运行。您需要一个在视图构建期间运行的转发器。 JSTL <c:forEach>
就是这样的。
<p:selectOneMenu ...>
<c:forEach items="#{reportRegisterManagedBean.startersSelectItems}" var="dss">
<f:selectItem ... />
</c:forEach>
</p:selectOneMenu>
或者,创建自定义渲染器。以下是<p:selectManyCheckbox>
:Primefaces tooltip for p:selectManyCheckbox
答案 1 :(得分:2)
因为你不喜欢String数组。 这里是用户类的测试和工作示例:
public class FilterBean {
private List<User> uList = new ArrayList<User>();
private User selectedUser = new User();
public List<User> getuList() {
User u1 = new User();
u1.setName("Tom");
u1.setDesc("worker");
User u2 = new User();
u2.setName("Peter");
u2.setDesc("owner");
uList.add(u1);
uList.add(u2);
return uList;
}
public void setuList(List<User> uList) {
this.uList = uList;
}
public User getSelectedUser() {
return selectedUser;
}
public void setSelectedUser(User selectedUser) {
this.selectedUser = selectedUser;
}
}
这是JSF
<p:selectOneMenu value="#{filterBean.selectedUser}">
<f:selectItem itemLabel="Select One" itemValue="" />
<f:selectItems value="#{filterBean.uList}" var="n" itemValue="#{n}" itemDescription="#{n.desc}" itemLabel="#{n.name}" />
</p:selectOneMenu>
这显示了汤姆和彼得的说法:)
答案 2 :(得分:1)
以下是在primefaces
中创建下拉列表的方法:
<p:selectOneMenu id="starter" value="#{reportRegisterManagedBean.starter.selectedItem}">
<f:selectItems value="#{reportRegisterManagedBean.starter.startersSelectItems}" />
</p:selectOneMenu>
答案 3 :(得分:1)
我尝试了几个例子并得到了这个结果:
我在pojo中有这个:
private String selectL;
private String[] listas;
public String[] getListas() {
listas = new String[2];
listas[0] = "pirmas";
listas[1] = "antras";
return listas;
}
这个jsf有效(itemDescription必须是String):
<p:selectOneMenu value="#{formBean.selectL}">
<f:selectItems value="#{filterBean.listas}" var="n" itemDescription="#{n}2" />
</p:selectOneMenu>
而这不是:/:
<p:selectOneMenu value="#{formBean.selectL}">
<f:selectItems value="#{filterBean.listas}" itemDescription="test2" />
</p:selectOneMenu>
编辑:
经过一些测试后,我刚刚将var添加到第二个selectOneMenu中,现在也可以使用:
<p:selectOneMenu value="#{formBean.selectL}">
<f:selectItems value="#{filterBean.listas}" var="n" itemDescription="test2" />
</p:selectOneMenu>