- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 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}" />
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/
我的 JSON 数据如下所示: [{"name":"age","value":31}, {"name":"height (inches)","value":62}, {"name":"location
这个问题在这里已经有了答案: How to populate options of h:selectOneMenu from database? (5 个答案) 关闭 5 年前。 是否可以在标签中将
我看过这个问题Bootstrap tagsinput add tag with id and value ,但该解决方案对我不起作用: 我发现为了让输入框识别我输入的标签,我要么必须拥有 data-r
我有 2 件元素: 单选按钮 输出文本 我想做的是:当用户检查单选按钮时 -> 在我的输出文本中获取选中的单选按钮的 itemLabel 。 (不是 itemValue) 我有以下代码,在输出文本中显
我对下面的代码有两个问题。 第一个是,如何在 selectItem 中为 selectOneRadio 提供一个 itemValue 作为函数的返回值?我知道这适用于普通的 itemValue,如果我
据我所知,在 SelectOneMenu 中显示信息的正确方法是拥有一个对象列表并使用它的属性,如下所示: 但是如果我没有玩家列表怎么办,如果我有这样的东西怎么办?我想让它
我在 Facelets 页面中有以下下拉列表: 问题是,无论我输入什么 itemLabel (JSF EL 表达式或纯文本),它不显示。知道我做错了什么吗? 这是ContactConve
这个问题被问了很多次,但没有一个答案对我有帮助。 简而言之:我输入了一些标签。在某些情况下,我需要动态添加一个新的。我用内置函数来做: $('#msg-receiver').tagsinput('ad
我是一名优秀的程序员,十分优秀!