【发布时间】:2011-10-03 21:37:48
【问题描述】:
我在 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...
}
【问题讨论】:
-
使用纯文本应该可以。