0

我有以下 JSF 1.2 应用程序 xhtml 文件的 facelet 代码:

<h:selectOneRadio value="#{cdM.val}"> 
       <f:selectItems value="#{userBean.myBooleanValues}" />      
</h:selectOneRadio>

userBean.myBooleanValues 方法将选择项返回为:new SelectItem(Boolean.TRUE, "Yes") 和类似的“NO”

cdM.val 的类型为:Object val;

当上面的无线电组件在 UI 上呈现时,我遇到了异常。java.lang.IllegalArgumentException:Value is no String (class=java.lang.Boolean, value=true) and component form0: with path: .......没有转换器。

最奇怪的是,当 jsf facelet jar 版本为:jsf-facelets-1.1.14.jar 时,上述异常消失了。(并出现在 jsf-facelets-1.1.11.jar 中)。

除了例外,我是否需要编写任何转换器来处理

4

1 回答 1

1

经过大量搜索,我解决了以下问题:

<h:selectOneRadio value="#{cdM.val} converter="javax.faces.Boolean"> 
       <f:selectItems value="#{userBean.myBooleanValues}" />      
</h:selectOneRadio>

其中 cdM.val 包含值:“是”或“否”。转换器用于在 String (cdM.val) 和 Boolean (userBean.myBooleanValues) 之间转换值。

异常得到解决。

于 2013-03-30T14:15:24.720 回答