Spring 如何防止selectOneRadio预设为默认布尔值?
我目前有一个简单的spring应用程序,有一个简单的页面,有一个简单的bean作为支持。以下是页面中的相关片段Spring 如何防止selectOneRadio预设为默认布尔值?,spring,jsf,radio-button,Spring,Jsf,Radio Button,我目前有一个简单的spring应用程序,有一个简单的页面,有一个简单的bean作为支持。以下是页面中的相关片段 <h:selectOneRadio id="q1" value="#{controller.formBean.question1}"> <f:selectItem itemValue="true" itemLabel="Yes" /> <f:selectItem itemValue="false" itemLabel="No" />
<h:selectOneRadio id="q1" value="#{controller.formBean.question1}">
<f:selectItem itemValue="true" itemLabel="Yes" />
<f:selectItem itemValue="false" itemLabel="No" />
</h:selectOneRadio>
控制器实例化bean(验证为非null)
但这也是问题的一部分,因为初始化时布尔值默认为false,所以这个表单控件总是预先选择“No”作为“默认答案”。我想让用户显式地选择是或否,因此我需要确保单选按钮没有预先填充
我尝试将所有字段转换为布尔值(这样我就可以表示true/false/null),但是spring崩溃了,想要的是布尔值,而不是布尔值
有人有什么想法吗?我是Spring的新手,我确信我在这里遗漏了一些非常简单的东西。使用
布尔值
而不是布尔值
。Boolean
有第三个“状态”:null
。我不知道你尝试“春天崩溃”是什么意思
更干净的替代方法是使用enum
public enum Choice {
Yes, No;
}
public Choice[] getChoices() {
return Choice.values();
}
与
我提到我已经试过使用布尔。在加载页面时,我得到了致命的错误,不幸的是我没有保存。。。IIRC它有一个NPE。我的同龄人对enum有着奇怪的看法,我不认为我能逃脱使用enum的惩罚。。。。对布尔值有什么见解吗?
public enum Choice {
Yes, No;
}
public Choice[] getChoices() {
return Choice.values();
}
<h:selectOneRadio id="q1" value="#{controller.formBean.question1}">
<f:selectItems value="#{data.choices}" />
</h:selectOneRadio>
private Choice question1;