我如何从支持bean的BootsFaces b:selectOneMenu组件中添加不同的值[重复]

问题描述 投票:0回答:1

您好,我有一个来自JSF Bootsfaces的组件selectOneMenu,我想用支持bean中的值填充它。

这是我尝试过的,但没有成功:

这是xhtml:

<b:selectOneMenu ajax="true" process="@this" label="Selecteaza CNP sau CUI">         
  <f:selectItems value="#{cereri.cnpcui}" var="beer"
                 itemValue="1" itemLabel="#{cereri.cnpcui}" />
</b:selectOneMenu>

这是Java Bean:

@ManagedBean(name = "cereri", eager = true)
@RequestScoped
public class Cereri {

private List<String> cnpcui;

public Cereri() {
    cnpcui = new ArrayList<>();
    cnpcui.add("CUI");
    cnpcui.add("CNP");
}

public List<String> getCnpcui() {

    return cnpcui;
}

public void setCnpcui(List<String> cnpcui) {
    this.cnpcui = cnpcui;
}

下拉列表将每一行的两个值都显示为数组:[CNP,CUI]都显示在两行上。我想要第一行有一个值,第二行有第二个值。

谢谢

jsf xhtml bootsfaces
1个回答
3
投票

您没有正确使用组件。当您引用itemLabel="#{cereri.cnpcui}"时,您正在告诉组件输出整个数组。

要获得您想要的行为,您需要执行以下操作;

<b:selectOneMenu ajax="true" process="@this" label="Selecteaza CNP sau CUI">         
        <f:selectItems value="#{cereri.cnpcui}" var="beer" 
                       itemValue="#{beer}" itemLabel="#{beer}" />
</b:selectOneMenu>

value属性引用的列表中的每个项目(在这种情况下为字符串)都放置在局部范围的变量beer中。因此,在表达式中引用#{beer}将指示组件输出实际的字符串。

© www.soinside.com 2019 - 2024. All rights reserved.