程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> 在springmvc中使用hibernate-validate,springmvcvalidate

在springmvc中使用hibernate-validate,springmvcvalidate

編輯:JAVA綜合教程

在springmvc中使用hibernate-validate,springmvcvalidate


在springmvc.xml中加入

 1 <!-- 國際化配置 -->    
 2     <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver" />
 3     <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
 4         <property name="basenames">
 5             <list>
 6                 <value>classpath:resource/ValidationMessages</value>
 7             </list>
 8         </property>
 9         <property name="useCodeAsDefaultMessage" value="true" />
10     </bean>
11     <!-- 注冊驗證器 -->
12     <mvc:annotation-driven validator="validator" />
13 
14     <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
15         <property name="providerClass" value="org.hibernate.validator.HibernateValidator" />
16         <!-- 這裡配置將使用上面國際化配置的messageSource -->
17         <property name="validationMessageSource" ref="messageSource" />
18     </bean> 

 

資源文件(可以省略不寫,這樣錯誤信息就直接寫中文即可)

1 val.age.message=\u5E74\u9F84\u4E0D\u80FD\u8D85\u8FC720\u5C81
2 
3 username.not.null=\u7528\u6237\u540D\u4E0D\u80FD\u4E3A\u7A7A
4 pwd.not.null=\u5BC6\u7801\u4E0D\u80FD\u4E3A\u7A7A
5 username.length=\u7528\u6237\u540D\u6700\u5927\u4E0D\u80FD\u8D85\u8FC7{max},\u6700\u5C0F\u4E0D\u80FD\u5C11\u4E8E{min}
6 
7 email.format.error=\u90AE\u7BB1\u683C\u5F0F\u4E0D\u6B63\u786E

 

被驗證的bean:

  1 package com.lee.web.entity;
  2 
  3 import javax.validation.constraints.Max;
  4 import javax.validation.constraints.Pattern;
  5 
  6 import org.hibernate.validator.constraints.Email;
  7 import org.hibernate.validator.constraints.Length;
  8 import org.hibernate.validator.constraints.NotBlank;
  9 
 10 public class ValBean {
 11     
 12     
 13     /**
 14      * Bean Validation 中內置的 constraint       
 15      * @Null   被注釋的元素必須為 null       
 16      * @NotNull    被注釋的元素必須不為 null       
 17      * @AssertTrue     被注釋的元素必須為 true       
 18      * @AssertFalse    被注釋的元素必須為 false       
 19      * @Min(value)     被注釋的元素必須是一個數字,其值必須大於等於指定的最小值       
 20      * @Max(value)     被注釋的元素必須是一個數字,其值必須小於等於指定的最大值       
 21      * @DecimalMin(value)  被注釋的元素必須是一個數字,其值必須大於等於指定的最小值       
 22      * @DecimalMax(value)  被注釋的元素必須是一個數字,其值必須小於等於指定的最大值       
 23      * @Size(max=, min=)   被注釋的元素的大小必須在指定的范圍內       
 24      * @Digits (integer, fraction)     被注釋的元素必須是一個數字,其值必須在可接受的范圍內       
 25      * @Past   被注釋的元素必須是一個過去的日期       
 26      * @Future     被注釋的元素必須是一個將來的日期       
 27      * @Pattern(regex=,flag=)  被注釋的元素必須符合指定的正則表達式       
 28      * Hibernate Validator 附加的 constraint       
 29      * @NotBlank(message =)   驗證字符串非null,且長度必須大於0       
 30      * @Email  被注釋的元素必須是電子郵箱地址       
 31      * @Length(min=,max=)  被注釋的字符串的大小必須在指定的范圍內       
 32      * @NotEmpty   被注釋的字符串的必須非空       
 33      * @Range(min=,max=,message=)  被注釋的元素必須在合適的范圍內 
 34      */
 35     private Long id;
 36 
 37     @Max(value=20, message="{val.age.message}")   
 38     private Integer age;
 39     
 40     @NotBlank(message="{username.not.null}")
 41     @Length(max=6, min=3, message="{username.length}")
 42     private String username;
 43 
 44     @NotBlank(message="{pwd.not.null}")
 45     @Pattern(regexp="/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,10}$/", message="密碼必須是6~10位數字和字母的組合")
 46     private String password;
 47     
 48     
 49     @Pattern(regexp="^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$", message="手機號格式不正確")
 50     private String phone;
 51 
 52     @Email(message="{email.format.error}")
 53     private String email;
 54 
 55     public Long getId() {
 56         return id;
 57     }
 58 
 59     public void setId(Long id) {
 60         this.id = id;
 61     }
 62 
 63     public String getUsername() {
 64         return username;
 65     }
 66 
 67     public void setUsername(String username) {
 68         this.username = username;
 69     }
 70 
 71     public String getPassword() {
 72         return password;
 73     }
 74 
 75     public void setPassword(String password) {
 76         this.password = password;
 77     }
 78 
 79     public String getPhone() {
 80         return phone;
 81     }
 82 
 83     public void setPhone(String phone) {
 84         this.phone = phone;
 85     }
 86 
 87     public String getEmail() {
 88         return email;
 89     }
 90 
 91     public void setEmail(String email) {
 92         this.email = email;
 93     }
 94 
 95     public Integer getAge() {
 96         return age;
 97     }
 98 
 99     public void setAge(Integer age) {
100         this.age = age;
101     }
102 }

controller,json form或者作為rest接口,都行

 1 @RequestMapping(value = "/val", method=RequestMethod.POST)
 2     @ResponseBody
 3     public LeeJSONResult val(@Valid @RequestBody ValBean bean, BindingResult result) throws Exception {
 4         
 5         if(result.hasErrors()){    
 6             //如果沒有通過,跳轉提示    
 7             Map<String, String> map = getErrors(result);
 8             return LeeJSONResult.error(map);
 9         }else{    
10             //繼續業務邏輯    
11         } 
12         
13         return LeeJSONResult.ok();
14     }
15     
16     private Map<String, String> getErrors(BindingResult result) {
17         Map<String, String> map = new HashMap<String, String>();
18         List<FieldError> list = result.getFieldErrors();
19         for (FieldError error : list) {
20             System.out.println("error.getField():" + error.getField());
21             System.out.println("error.getDefaultMessage():" + error.getDefaultMessage());
22             
23             map.put(error.getField(), error.getDefaultMessage());
24         }
25         return map;
26     }

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved