<p:selectonemenu =“”> <f:selectitems =“”>不显示

时间:2017-07-10 22:05:27

标签: java jsf primefaces jsf-2

我正在使用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/>

page

1 个答案:

答案 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提供您要迭代的项目的信息,但您从不告诉他这些项目的名称和价值。