我有一个使用selectOneRadio标记设置的布尔值如下:
<h:selectOneRadio value="#{bean.someBoolean}">
<f:selectItem itemValue="true" itemLabel="Yes"/>
<f:selectItem itemValue="false" itemLabel="No"/>
<f:selectItem itemValue="#{null}" itemLabel="Not applicable"/>
</h:selectOneRadio>
它正确地将这些值传递给bean,但在显示这些值时它表现得很奇怪。如果布尔值为true,则正确选择“是”&#39;单选按钮。但是,如果布尔值为false,则选择&#34;不适用&#34;按钮,如果Boolean为null,则根本不选择任何内容。我用<h:selectOneMenu>
对它进行了测试,效果非常好。这里发生了什么?
答案 0 :(得分:0)
Spacejockey,
如果使用布尔(对象类型)没问题,但如果使用布尔值(基本类型),则无法为变量赋值空值。
示例:
private boolean booleanPrimitiveVar; //(can't be null)
private Boolean booleanObjectVar; //(can be null)
在您的XHTML中,将true更改为#{true},对于false更改为
<h:selectOneRadio value="#{bean.someBoolean}">
<f:selectItem itemValue="#{true}" itemLabel="Yes"/>
<f:selectItem itemValue="#{false}" itemLabel="No"/>
<f:selectItem itemValue="#{null}" itemLabel="Not applicable"/>
</h:selectOneRadio>
我希望它有所帮助...
祝你好运!