我有一個JSF頁面下面的單選按鈕定義:JSF 2 selectOneRadio不設定值豆
<h:selectOneRadio id="durationList" value="#{rentalEquipmentCheckoutController.selectedDuration}" styleClass="durationList">
<f:selectItems var="d" value="#{rentalEquipmentCheckoutController.durationList}" itemValue="#{d}" itemLabel="#{d.label}">
</f:selectItems>
<f:converter converterId="durationConverter" />
<f:ajax />
</h:selectOneRadio>
我有一個似乎是工作的罰款轉換器。我已經完成了它,它正在做它應該在獲取和設置上做的事情。
@Override
public Object getAsObject(FacesContext context, UIComponent component, String durationHours) {
RentalDuration rentalDuration = DurationFactory.getDuration(Integer.parseInt(durationHours));
return rentalDuration;
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object object) {
if (object != null) {
RentalDuration duration = (RentalDuration) object;
return Integer.toString(duration.getHours());
}
return "Error";
}
控制器是ManagedBean,它是視圖範圍。該列表在用戶界面上顯示效果良好,並且所有值似乎都可以在Google Web開發工具中使用。當我單擊其中一個單選按鈕時,轉換器的getAsObject會觸發並返回RentalDuration的正確實例。但bean中的setSelectedDuration方法永遠不會被調用。我試着用一個字符串列表設置一個簡單的實現,而且這似乎工作得很好(相同的頁面,bean等)。 setTestString方法被調用。我讀了@ BalusC的帖子,以至於我的眼睛流血不止,但我似乎無法弄清楚我做錯了什麼。
下一次未設置setter或action時,請先通過http://stackoverflow.com/q/2118656。 – BalusC