【发布时间】:2012-11-09 21:48:10
【问题描述】:
我正在使用 JSF 1.2 和 Seam 框架使用 Java EE 编写应用程序。我有一个从单选按钮输入的表单,如下所示:
<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}"/>
我想要这样,如果有人在没有选择单选按钮的情况下提交表单,我会接受结果,但它不起作用。因为在验证阶段 jsf 拒绝提交并导致验证错误。我试图为它编写一个自定义验证器,不幸的是这对我也不起作用。
有什么建议吗?
【问题讨论】:
-
什么是验证错误。我看不到您在这里使用验证。您能否提供堆栈跟踪中的相关行和
setSelectedOptionId()方法的签名。 -
在jsf中提交表单后(称为postback),会合并不同的生命周期事件,如绑定值、验证。并且这些阶段事件在任何正常流程中执行,然后再调用我们的应用程序逻辑代码所在的应用程序阶段。事情是单选按钮验证器在没有选择单选按钮时拒绝值并再次重定向到表单。
-
只有在
<h:selectOneRadio>上有required="true"时才会出现所述问题,但您没有。到目前为止,代码看起来还不错。这对我来说可以。问题是在其他地方引起的。 SSCCE 会有很大帮助。 -
感谢@BaluC!是的,当
require="true"时应该会出现问题,但就我而言,我不明白为什么会这样。但我找到了解决办法。
标签: validation jsf seam jsf-1.2 selectoneradio