Spring MVC 數據校驗@Valid


先看看幾個關鍵詞 @Valid @Pattern @NotNull @NotBlank @Size BindingResult 這些就是Spring MVC的數據校驗的幾個注解。 那怎么用呢?往下看

1.先在pom.xml文件中加入依賴

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-validator</artifactId>
  <version>4.3.0.Final</version>
</dependency>

 2.寫controller層

@Controller
@RequestMapping("/user")
public class UserController extends BaseController{
    @RequestMapping("/index")
    public String index() {
        return "index";
    }

    @RequestMapping("/toAddUser")
    public String toAddUserPage() {
        return "addUser";
    }

    /**
     * form表單添加用戶,並用注解形式校驗
     * @Valid 表示 userModel要進行校驗
     * BindingResult 表示綁定校驗的錯誤信息返回
     * @param userModel
     * @param bindingResult
     * @return
     */
    @RequestMapping("/add")
    public String addUser(@Valid @ModelAttribute("userModel") UserModel userModel, BindingResult bindingResult, Model model) {

        if (bindingResult.hasErrors()) {
            FieldError fieldError = bindingResult.getFieldError();
            String validMess = fieldError.getDefaultMessage();
            model.addAttribute("errors", validMess);
            return "error";
        }
        System.out.println("用戶姓名:" + userModel.getName());
        System.out.println("用戶郵箱:" + userModel.getEmail());
        //用重定向防止頁面刷新重復提交
        return "redirect: /user/index";
    }
}

 

3、看看UserModel.java

public class UserModel {
    private Integer id;

//    @NotNull(message = "姓名不能為空")
    @NotBlank(message = "{username.not.empty}")
//    @Size(min = 3, max = 10, message = "please input right length")
    private String name;
    private Integer age;
    private String gender;
    @Pattern(regexp = "^[A-Za-z\\d]+([-_.][A-Za-z\\d]+)*@([A-Za-z\\d]+[-.])+[A-Za-z\\d]{2,4}$",
            message = "{username.not.empty}")
    private String email;
    @NotNull
    private String phone;

    setters... getters....
}

 

4、在spring 的配置文件中添加配置信息 applicationContext.xml

<!--JSR-303 @Valid 國際化支持配置 -->
<mvc:annotation-driven validator="validator" conversion-service="conversion-service" />
<bean id="validator"
      class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
    <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="basename" value="classpath:valid-message-zh" />
    <property name="fileEncodings" value="utf-8"/>
    <property name="cacheSeconds" value="120"/>
</bean>
<bean id="conversion-service" class="org.springframework.format.support.FormattingConversionServiceFactoryBean" />

 

5、別忘記配置文件中的 valid-message-zh.properties哦

username.not.empty=\u7528\u6237\u540d\u4e0d\u80fd\u4e3a\u7a7a

 

參考:

[1] 《Spring實戰》,人民郵電出版社, Craig Walls


免責聲明!

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



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