Validation 在不选择任何单选按钮的情况下接受表单提交

Validation 在不选择任何单选按钮的情况下接受表单提交,validation,jsf,seam,jsf-1.2,selectoneradio,Validation,Jsf,Seam,Jsf 1.2,Selectoneradio,我正在使用JSF1.2和Seam框架用JavaEE编写一个应用程序。我有一个表单,它从单选按钮获取输入,如下所示: <h:selectOneRadio value="#{testAction.selectedOptionId}" id="selectedQuestionOption" layout="pageDirection"> <s:selectItems var="selectedOption"

我正在使用JSF1.2和Seam框架用JavaEE编写一个应用程序。我有一个表单,它从单选按钮获取输入,如下所示:

<h:selectOneRadio value="#{testAction.selectedOptionId}"
                 id="selectedQuestionOption"
                 layout="pageDirection">
    <s:selectItems var="selectedOption" value="#{currentQuestion.options}"
                   label="#{selectedOption.optionString}"
                   itemValue="#{selectedOption.optionId}"/>
 </h:selectOneRadio>

 <h:commandButton id="goToNextQuestion" value="Submit"
                 action="#{testAction.postAnswer}"/>
 <h:commandButton id="goToNextQuestion" value="Submit" immediate="true"
             action="#{testAction.postAnswer}"/>

我希望,如果有人提交表单而没有选择单选按钮,我会接受结果,但它不起作用。因为在验证阶段,jsf拒绝提交并导致验证错误。我试图为它编写一个自定义验证器,不幸的是,这对我也不起作用


有什么建议吗?

我没有通过编写一个自定义验证器来找到解决此问题的任何方法,这应该是本例中的理想解决方案。但我找到了克服这种情况的办法。通过如下设置submit按钮的
immediate=“true”
,我可以绕过绑定值和验证阶段:

<h:selectOneRadio value="#{testAction.selectedOptionId}"
                 id="selectedQuestionOption"
                 layout="pageDirection">
    <s:selectItems var="selectedOption" value="#{currentQuestion.options}"
                   label="#{selectedOption.optionString}"
                   itemValue="#{selectedOption.optionId}"/>
 </h:selectOneRadio>

 <h:commandButton id="goToNextQuestion" value="Submit"
                 action="#{testAction.postAnswer}"/>
 <h:commandButton id="goToNextQuestion" value="Submit" immediate="true"
             action="#{testAction.postAnswer}"/>

然后应用我真正的业务逻辑。

验证错误是什么。我看不出你在这里使用验证。能否提供堆栈跟踪中的相关行以及
setSelectedOptionId()
方法的签名。在jsf中提交表单(称为回发)后,会合并不同的生命周期事件,如绑定值、验证。在调用应用程序阶段之前,这些阶段事件在任何正常流中都会执行,我们的应用程序逻辑代码就驻留在这个阶段。问题是,当没有选择单选按钮时,单选按钮验证器会拒绝值,并再次重定向到表单。只有在
上有
required=“true”
但没有单选按钮时,才会出现上述问题。到目前为止,代码看起来还不错。这对我来说很好。这个问题是由其他地方引起的。SSCCE会帮上大忙的。谢谢@BaluC!是的,问题应该在
require=“true”
时出现,但就我的情况而言,我不明白为什么会发生。但我找到了一份工作。