您好,我有一个来自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]都显示在两行上。我想要第一行有一个值,第二行有第二个值。
谢谢
您没有正确使用组件。当您引用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}
将指示组件输出实际的字符串。