用spring的@Validated注解和org.hibernate.validator.constraints.*的一些注解在后台完成數據校驗


 這個demo主要是讓spring的@Validated注解和hibernate支持JSR數據校驗的一些注解結合起來,完成數據校驗。這個demo用的是springboot。

首先domain對象Foo的代碼如下:

package com.entity;

import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotBlank;

import javax.validation.constraints.Min;

public class Foo {
    @NotBlank(message = "此name不能為空")
    private String name;
    @Min(value = 18,message = "此age最小為18")
    private Integer age;
    @Email(message = "郵箱格式錯誤")
    private String email;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

其次controller層的代碼如下:

package com.validation;

import com.entity.Bar;
import com.entity.BarValidator;
import com.entity.Foo;
import org.springframework.validation.BindingResult;
import org.springframework.validation.ObjectError;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.validation.Valid;
import java.util.List;

@RestController
public class FooController {

    @RequestMapping("/fooTest")
    public String foo(@Valid Foo foo, BindingResult result){
        if(result.hasErrors()){
            List<ObjectError> allErrors = result.getAllErrors();
            for(ObjectError objectError :allErrors){
                String defaultMessage = objectError.getDefaultMessage();
                System.out.println("defalutMessage="+defaultMessage);
            }
            System.out.println("allErrors="+allErrors.toArray());
            return  "failed";
        }
        return  "success";
    }
  
}

啟動spring boot的代碼如下:

package com.validation;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;

@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM