以下selectItems是從會話作用域映射饋送的。當用戶點擊Submit按鈕時,應該在Request Scoped後備bean中設置一個日期字段並將其顯示在頁面上。JSF 2 - f:使用日期鍵控的selectItems地圖
<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轉換器,但後來又收到了一個更加神祕的驗證錯誤。
找到a post,建議檢查equal()方法是否可用,以及item select是否在下拉列表中,在這種情況下兩者都應該爲true。
我能想到的一種解決方法是將我的地圖更改爲字符串鍵,其中日期以字符串形式保存。但它似乎是一個過度殺傷力。
關於如何讓這套設置起作用的任何建議?
支持bean:
@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;
}
}
謝謝!
*「但後來收到了一個更加神祕的驗證錯誤。」*你爲什麼不在你的問題中講述它? – BalusC
這是「窗體:位置:驗證錯誤:值無效」 –