JSF 2 selectOneRadio未在Bean中设置值[重复]
Posted
技术标签:
【中文标题】JSF 2 selectOneRadio未在Bean中设置值[重复]【英文标题】:JSF 2 selectOneRadio Not Setting value in Bean [duplicate] 【发布时间】: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 的帖子,以至于我的眼睛都在流血,但我似乎无法弄清楚我做错了什么。
【问题讨论】:
【参考方案1】:呃。似乎它永远不会失败;我可以在某事上工作 16 个小时,并且在我发布之后,我在发布后不久就找到了答案。问题是我填充支持列表以填充单选按钮的对象与我试图在转换器中使用的对象不同。我试图在转换器中创建新的 Duration 对象,我希望一些 JSF 魔法能够找出它们与列表中的相同。一旦我将工厂设置为返回相同的对象,支持方法 setSelectedDuration 方法就会开始触发。如果有人能解释这在 JSF 的内部是如何工作的,我很想听听。对象的比较,然后选择对象的设置等。
【讨论】:
下次不调用setter或action时,先通过***.com/q/2118656。以上是关于JSF 2 selectOneRadio未在Bean中设置值[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Oracle Weblogic 12.1 中部署 JSF 2.1 webapp?
f:ajax 监听器不能与 h:selectOneRadio 一起使用
JSF / PrimeFaces - 如何显示自定义验证器的消息,但不显示同一组件上的必需验证