下面的 selectItems 来自 Session Scoped Map。当用户单击提交按钮时,应该在 Request Scoped 支持 bean 中设置一个日期字段并将其显示在页面上。
<h:selectOneMenu value="#{dropDown.selectedDate}">
<f:selectItems value="#{mapValues.dateMap.entrySet()}" var="entry" itemLabel="#{entry.value}" itemValue="#{entry.key}" />
</h:selectOneMenu>
<h:commandButton value="Submit" />
You selected Date #{dropDown.selectedDate}
但是,收到以下转换错误:
Conversion Error setting value 'Wed Dec 26 15:09:32 EST 2012' for 'null Converter'.
我不确定为什么会收到此错误。我尝试在 selectOneMenu 标记上设置 javax.faces.DateTime 转换器,但随后收到更神秘的验证错误。
发现一个帖子建议检查 equal() 方法是否可用,并且项目选择是否在下拉列表中,在这种情况下两者都应该是正确的。
我能想到的一种解决方法是将我的地图更改为字符串键控,其中日期保存为字符串。但这似乎是矫枉过正。
有关如何使此设置正常工作的任何建议?
支持豆:
@Named
@RequestScoped
public class DropDown {
private Date selectedDate;
public Date getSelectedDate() {
return selectedDate;
}
public void setSelectedDate(Date selectedDate) {
this.selectedDate = selectedDate;
}
}
地图豆:
@Named
@SessionScoped
public class MapValues implements Serializable {
private Map<Date, String> dateMap;
@PostConstruct
public void init() {
dateMap = new LinkedHashMap<Date, String>();
dateMap.put(new Date(), "DATEVALUE1");
}
public Map<Date, String> getDateMap() {
return dateMap;
}
public void setDateMap(Map<Date, String> dateMap) {
this.dateMap = dateMap;
}
}
谢谢!