我正在使用jsf开发一个java应用程序,并在我的项目中放置<p: selectOneMenu />
组件primefaces但是<p: selectOneMenu /> <f: selectItems>
组件项没有出现而且<selectOneMenu />
已经消失了
更新
<h:panelGroup layout="block" styleClass="tamanho">
<p>Tamanho:</p> <p:selectOneMenu id="tamanhos" value="#{tamanho.tamanho}" styleClass="tamanho" effect="fold" editable="true">
<f:selectItem itemValue="#{null}" itemLabel="-- select one --" />
<f:selectItems value="#{tamanho.tamanhos_roupas}" />
</p:selectOneMenu>
@ManagedBean(name="tamanho")
@RequestScoped
public class Tamanho {
private String tamanho;
private List<SelectItem> tamanhos_roupas; // +getter (no setter necessary)
@PostConstruct
public void init() {
tamanhos_roupas = new ArrayList<SelectItem>();
tamanhos_roupas.add(new SelectItem("PP", "PP"));
tamanhos_roupas.add(new SelectItem("P", "P"));
tamanhos_roupas.add(new SelectItem("M", "M"));
tamanhos_roupas.add(new SelectItem("G", "G"));
tamanhos_roupas.add(new SelectItem("GG", "GG"));
}
public String getTamanho() {
return tamanho;
}
public void setTamanho(String tamanho) {
this.tamanho = tamanho;
}
public List<SelectItem> getTamanhos_roupas() {
return tamanhos_roupas;
}
}
看看主要表面的复印机是如何消失的,<p:selectOneMenu/>
答案 0 :(得分:0)
我假设“#{tamanho.tamanhos_roupas}”是一个已包含值的列表,所以您需要做的是添加'var','itemValue' 和'itemLabel'在您的selectItems标记中。
'var'属性是每次迭代中列表元素变量的名称,'itemValue'是#{tamanho.tamanho}值的值选择一个选项后,'itemLabel'是用户阅读以识别该选项的内容。
<h:panelGroup layout="block" styleClass="tamanho">
<p>Tamanho:</p> <p:selectOneMenu id="tamanhos" value="#{tamanho.tamanho}"
styleClass="tamanho" effect="fold" editable="true">
<f:selectItem itemValue="#{null}" itemLabel="-- select one --" />
<f:selectItems value="#{tamanho.tamanhos_roupas}" var="tamanho"
itemValue="#{tamanho}" itemLabel="#{tamanho.stringNome}" />
</p:selectOneMenu>
请参阅编写代码的方式,您只需向SelectOneMenu提供您要迭代的项目的信息,但您从不告诉他这些项目的名称和价值。