4.2springmvc校验

1.hibernate的校验框架validation所需要jar包:

 

2 在applicationContext.xml中配置校验器:

<!-- 校验器 -->
    <bean id="validator"
        class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
        <!-- hibernate校验器-->
        <property name="providerClass" value="org.hibernate.validator.HibernateValidator" />
        <!-- 指定校验使用的资源文件,在文件中配置校验错误信息,如果不指定则默认使用classpath下的ValidationMessages.properties -->
        <property name="validationMessageSource" ref="messageSource" />
    </bean>
<!-- 校验错误信息配置文件 -->
    <bean id="messageSource"
        class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <!-- 资源文件名-->
        <property name="basenames">   
            <list>    
            <value>classpath:CustomValidationMessages</value> 
            </list>   
        </property>
        <!-- 资源文件编码格式 -->
        <property name="fileEncodings" value="utf-8" />
        <!-- 对资源文件内容缓存时间,单位秒 -->
        <property name="cacheSeconds" value="120" />
    </bean>

3 校验器注入到处理器适配器中

<mvc:annotation-driven conversion-service="conversionService"
validator="validator"></mvc:annotation-driven>

4 在pojo中添加校验规则

@Size(min=1,max=30,message="{items.name.length.error}")
private String name;

5 CustomValidationMessages.properties

 items.name.length.error=姓名长度必须在1到30之间

6 在Controller中显示错误信息

 

//在需要校验的pojo前边添加@Validated,在需要校验的pojo后边添加BindingResult bindingResult接收校验出错信息

//注意:@ValidatedBindingResult bindingResult是配对出现,并且形参顺序是固定的(一前一后)。

 

7在jsp页面显示错误信息

 

if (bindingResult.hasErrors()) {
            // 输出错误信息
            List<ObjectError> allErrors = bindingResult.getAllErrors();

            for (ObjectError objectError : allErrors) {
                // 输出错误信息
                System.out.println(objectError.getDefaultMessage());

            }
            // 将错误信息传到页面
            model.addAttribute("allErrors", allErrors);

            
            // 出错重新到商品修改页面
            return "items/editItems";
        }

 

jsp页面

<!-- 显示错误信息 -->
<c:if test="${allErrors!=null }">
    <c:forEach items="${allErrors }" var="error">
    ${ error.defaultMessage}<br/>
</c:forEach>
</c:if>

 

posted on 2015-12-27 18:24  james-roger  阅读(269)  评论(0编辑  收藏  举报