zoukankan      html  css  js  c++  java
  • SpringMVC使用校验validator校验对象属性

    1.pom.xm添加依赖

    <dependency>
                <groupId>javax.validation</groupId>
                <artifactId>validation-api</artifactId>
            </dependency>
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-validator</artifactId>
            </dependency>
    <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
                <version>2.8.7</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-annotations</artifactId>
                <version>2.8.7</version>
            </dependency>
    <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>2.8.7</version>
            </dependency>

    2.配置文件.xml

    <!-- 校验参数 -->
        <bean id="commonProvider.messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
            <property name="basenames">
                <list>
                    <value>classpath:message/message</value>
                    <value>classpath:org/hibernate/validator/ValidationMessages</value>
                </list>
            </property>
            <!--默认为false,这样当Spring在ResourceBundle中找不到messageKey的话,就抛出NoSuchMessageException,   把它设置为True,则找不到不会抛出异常,而是使用messageKey作为返回值。-->
            <property name="useCodeAsDefaultMessage" value="false"/>
            <property name="defaultEncoding" value="UTF-8"/>
            <property name="cacheSeconds" value="600"/>
        </bean>
    
        <bean id="commonProvider.validatorFactory" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
            <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
            <property name="validationMessageSource" ref="commonProvider.messageSource"/>
        </bean>
    
        <bean id="commonProvider.validator" factory-bean="commonProvider.validatorFactory" factory-method="getValidator"/>
        <!-- 参数校验 -->
        <bean id="commonProvider.paramCheckLogic" class="com.jd.m.cms.bjshare.common.handler.logic.ParamCheckLogic">
            <property name="messageSource" ref="commonProvider.messageSource" />
            <property name="validator" ref="commonProvider.validator" />
        </bean>
    

    3.对象.java

    public class test {
        @NotNull(message = "测试id不能为空", groups = { First.class })
        private String id;
        @NotNull(message = "测试name不能为空", groups = { Second.class })
        private  String name;
    
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
        public test(){}
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public test(String id, String name) {
            this.id = id;
            this.name = name;
        }
        public interface First {
    
        }
        public interface Second {
    
        }

    4.调用

    1).
    public <T> T checkObjParamValidate(@NotNull T t, Class<?>... groups) {
    2).
    .checkObjParamValidate(test,com.jd.bjshare.domain.test.First.class,com.jd.bjshare.domain.test.Second.class);
    3).
    validator.validate(t, groups);

    5.页面返回结果

    {"code":1,"msg":"测试id不能为空,测试name不能为空","data":{}}
  • 相关阅读:
    lucene.net的一点知识
    Lucene.net的全新体验
    天涯上令人肝肠寸断的100个签名
    第二天,把所有官方的demo都测试一遍
    DeBug 第一次实际使用~~
    [正式发布]库存管理系统v1.1!修复大量BUG,以及UI显示!
    !!终于把【库存管理的大致功能完成了!】
    第三天实战jsp&servlet的学生信息管理!
    ER图,数据库设计,烦恼
    第一天学习 easyUi
  • 原文地址:https://www.cnblogs.com/PengChengLi/p/10194505.html
Copyright © 2011-2022 走看看