【问题标题】:BeanValidation not working for Radio ButtonsBeanValidation 不适用于单选按钮
【发布时间】:2014-09-12 15:09:18
【问题描述】:

我正在使用 SpringWebFlow 创建一个 portlet,这个 portlet 有一个 JSP,其中包含一些输入字段、一些下拉菜单和几个单选按钮,我使用了 BeanValidation 和 @NotNull 和 @NotEmpty 等注释对于下拉和输入工作正常字段,但注解不适用于 RadioButton, 在我的 JSP 中有这段代码

<aui:field-wrapper name="gender">
    <aui:input inlineLabel="right" name="gender" type="radio" value="male" label="male" checked="${surveyBean.gender == 'male' ? 'true' : 'false'}"/>
    <aui:input inlineLabel="right" name="gender" type="radio" value="female" label="female" checked="${surveyBean.gender == 'female' ? 'true' : 'false'}" />
</aui:field-wrapper>

在我的 PageBean 中,我有以下代码

@NotNull
@NotEmpty
public String getGender()
{
    return gender;
}

我想要的是用户不应该将任何字段留空或未选中,对于输入字段和下拉列表,如果它们留空,则会从 Validation.properties 文件中显示正确的错误消息,对于单选按钮 @NotNull 和 @NotEmpty 不是工作意味着他们没有得到验证,所以即使他们没有被选中,用户也可以进入下一页......

请你们指导我正确的方向吗?

【问题讨论】:

    标签: java spring-mvc spring-webflow bean-validation liferay-aui


    【解决方案1】:

    为支持 bean 设置的性别值是多少。 Bean Validation 并不关心它从哪里获取数据。它对下拉菜单和单选按钮一无所知。有趣的是调用验证时 bean 中的不同值是什么。如果没有例外并且没有违反约束,我会假设性别既不为空也不为空。例如,它可以是一个空格。 @NotEmptyNotBlank 之间存在差异。后者也会检查空格字符。

    【讨论】:

    • 我检查过了,当单选按钮未被选中时,它的值设置为 null。我写了一个自定义注释来检查它的值,它显示值为空并且'isValid'方法返回false,问题似乎是MessageInterpolator,它以某种方式抛出空指针异常......你知道它是否可能是因为BeanValidation是无法确定将错误消息放置在何处,因为单选按钮是两个具有相同名称和 ID 的按钮?并且可能这就是这种不同行为的原因,因为其他表单字段得到了很好的验证?谢谢
    • 我想我找到了问题的根源,在这里发布了一个新问题 - stackoverflow.com/questions/25831742/…
    猜你喜欢
    • 1970-01-01
    • 2018-05-17
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    • 2020-06-29
    • 2017-12-18
    • 2016-07-09
    • 2013-10-09
    相关资源
    最近更新 更多