gpt4 book ai didi

java - JSF selectManyListbox 显示值绑定(bind)错误

转载 作者:行者123 更新时间:2023-12-01 06:07:07 25 4
gpt4 key购买 nike

我在 JSP 中使用 JSF 标记 h:selectManyListbox 来显示 bean 中的项目列表。

<h:selectManyListbox value="#{settingsBean.statusIds}" style="width: 100%; height: 200px;">
<f:selectItem value="#{settingsBean.statusItems}" />
</h:selectManyListbox>

statusItems 对象在以下 bean 类中定义:

SettingsBean.java

public class SettingsBean {
private List<String> statusIds;
private List<SelectItem> statusItems;

public SettingsBean() {
initStatus();
}

private void initStatus() {
statusItems = new ArrayList<SelectItem>();

statusItems.add(new SelectItem("v1", "lbl1"));
statusItems.add(new SelectItem("v2", "lbl2"));
statusItems.add(new SelectItem("v3", "lbl3"));
}

public ArrayList getStatusItems(){
return getStatusItemsList(false);
}

@SuppressWarnings("unchecked")
private ArrayList getStatusItemsList(boolean selected) {
ArrayList ids = new ArrayList();
if (!selected) {
boolean inSelIds = false;
for (int i=0; i < statusItems.size(); i++) {
inSelIds = false;
SelectItem item = (SelectItem)statusItems.get(i);

if (selected==inSelIds) {
String text = item.getLabel();
//ids.add(text);
ids.add(new SelectItem(item.getValue(), text));
}
}
}

return ids;
}
}

但是我在加载此内容时收到一条错误消息:

<小时/>
HTTP Status 500 - java.lang.IllegalArgumentException: Value binding '#{settingsBean.statusItems}' of UISelectItem : {Component-Path : [Class: javax.faces.component.UIViewRoot,ViewId: /jsp/Settings.jsp][Class: javax.faces.component.html.HtmlSelectManyListbox,Id: _id3][Class: javax.faces.component.UISelectItem,Id: _id4]} does not reference an Object of type SelectItem

我应该遗漏什么或导致此问题?谢谢您的帮助

最佳答案

在 JSF 中,我们有两个不同的标签 selectItemselectItemsselectItem 用于显示单个项目,尽管我们可以使用多个 selectItem 标签来显示多个值。但是,如果我们有一个 selectItems 列表,那么我们应该使用 selectItems 而不是 selectItem。因此,将 XHTML 上的 selectItem 标记替换为 selectItems ,如下所示:

<h:selectManyListbox value="#{settingsBean.statusIds}" style="width: 100%; height: 200px;">
<f:selectItems value="#{settingsBean.statusItems}" />
</h:selectManyListbox>

关于java - JSF selectManyListbox 显示值绑定(bind)错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42087483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com