spring mvc 的数据校验

来源:互联网 发布:java基础面试题 编辑:程序博客网 时间:2024/05/29 15:59

spring mvc的数据校验一般是使用hibernate的校验框架validation,所需要jar


配置校验器springmvc.xml

<bean id="validator"class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"><property name="providerClass" value="org.hibernate.validator.HibernateValidator" /><property name="validationMessageSource" ref="messageSource"/></bean><mvc:annotation-driven validator="validator" />注入适配器中<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">  <property name="basenames"><list><value>classpath:VlidationMessages</value> resource/ValidationMessage<value>classpath:messages</value> </list></property>

将validator加到处理器适配器
<mvc:annotation-driven validator="validator"> </mvc:annotation-driven>

添加校验规则

@NotEmpty(message="姓名不能为空")private String name;@NotEmpty(message="密码不能为空")private String pwd;

校验

// 商品修改提交@RequestMapping("/editItemSubmit")public String editItemSubmit(@Validated @ModelAttribute("item") Items items,BindingResult result,@RequestParam("pictureFile") MultipartFile[] pictureFile,Model model)throws Exception {//如果存在校验错误则转到商品修改页面if (result.hasErrors()) {List<ObjectError> errors = result.getAllErrors();for(ObjectError objectError:errors){System.out.println(objectError.getCode());System.out.println(objectError.getDefaultMessage());}return "item/editItem";}


分组校验

定义分组:

分组就是一个标识,这里定义一个接口:

public interface ValidGroup1 {}public interface ValidGroup2 {}

指定分组校验

public class Items {    private Integer id;//这里指定分组ValidGroup1,此@Size校验只适用ValidGroup1校验    @Size(min=1,max=30,message="{item.name.length.error}",groups={ValidGroup1.class})    private String name;


使用
// 商品修改提交@RequestMapping("/editItemSubmit")public String editItemSubmit(@Validated(value={ValidGroup1.class}) @ModelAttribute("item") Items items,BindingResult result,@RequestParam("pictureFile") MultipartFile[] pictureFile,Model model)throws Exception {在@Validated中添加value={ValidGroup1.class}表示商品修改使用了ValidGroup1分组校验规则,也可以指定多个分组中间用逗号分隔,@Validated(value={ValidGroup1.class,ValidGroup2.class })


校验注解说明

Bean Validation 中内置的 constraint       @Null   被注释的元素必须为 null       @NotNull    被注释的元素必须不为 null       @AssertTrue     被注释的元素必须为 true       @AssertFalse    被注释的元素必须为 false       @Min(value)     被注释的元素必须是一个数字,其值必须大于等于指定的最小值       @Max(value)     被注释的元素必须是一个数字,其值必须小于等于指定的最大值       @DecimalMin(value)  被注释的元素必须是一个数字,其值必须大于等于指定的最小值       @DecimalMax(value)  被注释的元素必须是一个数字,其值必须小于等于指定的最大值       @Size(max=, min=)   被注释的元素的大小必须在指定的范围内       @Digits (integer, fraction)     被注释的元素必须是一个数字,其值必须在可接受的范围内       @Past   被注释的元素必须是一个过去的日期       @Future     被注释的元素必须是一个将来的日期       @Pattern(regex=,flag=)  被注释的元素必须符合指定的正则表达式       Hibernate Validator 附加的 constraint       @NotBlank(message =)   验证字符串非null,且长度必须大于0       @Email  被注释的元素必须是电子邮箱地址       @Length(min=,max=)  被注释的字符串的大小必须在指定的范围内       @NotEmpty   被注释的字符串的必须非空       @Range(min=,max=,message=)  被注释的元素必须在合适的范围内    



0 0