Spring3 MVC:验证无效


问题内容

性别验证无效。即使在“性别”文本字段中未输入任何值,也可以成功验证表单,而不会引发任何错误。

以下是Employee类:

@Size(min=2,max=10)
private String gender;

// Setters and Getters

下面是Controller方法:

@RequestMapping(value="done", method = RequestMethod.POST)
public String validateForm(@Valid Employee employee, BindingResult result, ModelMap m){
    if(result.hasErrors()){
        System.out.println("Validation Failed!!!");
        return "main";
    }else{
        System.out.println("Validation Succeeded!!!");
        return "done";
    }
}

以下是上下文文件:

<context:annotation-config />
<context:component-scan
    base-package="com.XXX" />

<bean id="viewResolver"
    class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <property name="viewClass"
        value="org.springframework.web.servlet.view.JstlView" />
    <property name="prefix" value="/WEB-INF/pages/" />
    <property name="suffix" value=".jsp" />
</bean>

下面是jsp文件:

<tr>
            <td>
                Gender:
            </td>
            <td>
                <form:input path="gender"/>
                <form:errors path="gender" cssStyle="color: red;"/>
            </td>
        </tr>

我无法找出缺少的内容,但是却有些愚蠢。请帮忙。


问题答案:

1)所有javax约束在其通过条件中都包含一个隐式“或null”。如果要捕获空格,则需要添加@NotNull或重新配置Web资料夹,以将空格输入绑定到空字符串而不是null。

2)<context:annotation-config />不打开Spring
3调度程序servlet自动配置魔术。如果需要,您需要定义自己的验证器bean。要使所有内容都能自动运行,您需要使用<mvc:annotation- driven />