gpt4 book ai didi

JSF 2 not recognizing itemLabel and itemValue attributes

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

我在 Facelets 页面中有以下下拉列表:

<h:selectOneMenu value="#{contactBean.selectedContact}" converter="#{contactConverter}">
<f:selectItems value="#{contactsHolder.contacts}" var="contact"
itemLabel="#{contact.firstName}" itemValue="#{contact}" />
</h:selectOneMenu>

问题是,无论我输入什么 itemLabel (JSF EL 表达式或纯文本),它不显示。知道我做错了什么吗?

这是 ContactConverter :
@ManagedBean(name = "contactConverter")
@RequestScoped
public class ContactConverter implements Converter, Serializable {
@ManagedProperty(value = "#{contactsHolder}")
private ContactsHolder contactsHolder;

@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
return contactsHolder.getContacts().get(value);
}

@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
return ((Contact) value).getContactID();
}
//getter & setters...
}

ContactsHolder :
@ManagedBean
@SessionScoped
public class ContactsHolder implements Serializable {
private Map<String, Contact> contacts;

@PostConstruct
public void init() {
contacts = new LinkedHashMap<String, Contact>();
//get Contacts data and populate map...
}
//getters & setters...
}

最佳答案

您正在喂食 Map<String, Contact><f:selectItems value> . var中的每一项属性将是 Map.Entry<String, Contact> 只有 getKey()getValue()返回 String 的方法映射键和 Contact分别映射值。 Map.Entry类(class)确实没有 getFirstName()方法。

相应地修复它:

<f:selectItems value="#{contactsHolder.contacts}" var="contact"
itemLabel="#{contact.value.firstName}" itemValue="#{contact.value}" />

或者,如果您的目标是支持 Servlet 3.0/EL 2.2 的容器,它允许调用非 getter 方法,那么您可以使用 Map#values() 得到一个 Collection<Contact> :
<f:selectItems value="#{contactsHolder.contacts.values()}" var="contact"
itemLabel="#{contact.firstName}" itemValue="#{contact}" />

或者,制作 #{contactsHolder.contacts} List<Contact>相反,您的初始 View 代码将起作用:
<f:selectItems value="#{contactsHolder.contacts}" var="contact"
itemLabel="#{contact.firstName}" itemValue="#{contact}" />

关于JSF 2 <f :selectItems> not recognizing itemLabel and itemValue attributes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7640973/

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