我有以下JSF 1.2应用程序xhtml文件的facelet代码:
<h:selectOneRadio value="#{cdM.val}">
<f:selectItems value="#{userBean.myBooleanValues}" />
</h:selectOneRadio>
userBean.myBooleanValues方法将select Item返回为: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:.......没有Converter。
最奇怪的是,当jsf facelet jar版本为:jsf-facelets-1.1.14.jar时,上述异常消失。 (并显示为jsf-facelets-1.1.11.jar)。
我是否需要将任何转换器编写为deel,但异常
答案 0 :(得分: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)之间转换值。
异常得到解决。