Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 如何防止selectOneRadio预设为默认布尔值?_Spring_Jsf_Radio Button - Fatal编程技术网

Spring 如何防止selectOneRadio预设为默认布尔值?

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" />

我目前有一个简单的spring应用程序,有一个简单的页面,有一个简单的bean作为支持。以下是页面中的相关片段

<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;