你的位置:首页 > Java教程

[Java教程]在springmvc中使用hibernate


在springmvc.

 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\u5C812 3 username.not.null=\u7528\u6237\u540D\u4E0D\u80FD\u4E3A\u7A7A4 pwd.not.null=\u5BC6\u7801\u4E0D\u80FD\u4E3A\u7A7A5 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   }