【发布时间】:2017-06-29 07:54:25
【问题描述】:
我有一个带有以下单选按钮定义的 JSF 页面:
<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>
我有一个似乎工作正常的转换器。我已经完成了它,它正在做它应该在 get 和 set 上做的事情。
@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,它是视图范围的。该列表在 UI 上显示良好,并且所有值似乎都在 google web 开发工具中工作。当我单击其中一个单选按钮时,转换器的 getAsObject 将触发并返回正确的 RentalDuration 实例。但是永远不会调用 bean 中的 setSelectedDuration 方法。我尝试使用字符串列表设置一个简单的实现,这似乎工作得很好(相同的页面,bean 等)。调用 setTestString 方法。我已经阅读了很多@BalusC 的帖子,以至于我的眼睛都在流血,但我似乎无法弄清楚我做错了什么。
【问题讨论】:
标签: jsf-2 radio-button converter