您的位置:首页 > 编程语言 > Java开发

Spring 校验(validator,JSR-303)简单实现

2017-05-26 16:00 330 查看

Spring 校验(validator,JSR-303)简单实现

利用Spring MVC 与 hibernate的JSR-303规范结合实现后台校验(简单案例):

什么是JSR-303规范

与Spring MVC结合

实体类添加验证注解

*控制器验证注解添加

Spring 校验validatorJSR-303简单实现
什么是JSR-303规范

与Spring MVC结合

实体类添加验证注解

控制器验证注解添加

什么是JSR-303规范

JSR 303是Java EE 6中的一项子规范,叫做Bean Validation,官方参考实现是hibernate Validator,此实现与Hibernate ORM没有任何关系。JSR 303用于对Java Bean中的字段的值进行验证。

与Spring MVC结合

Spring-mvc.xml配置:

<!--JSR-303-->
<mvc:annotation-driven validator="validator"/>

<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
<property name="validationMessageSource" ref="messageSource"/>
</bean>
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="validatemessage"/>
<property name="useCodeAsDefaultMessage" value="false"/>
<property name="defaultEncoding" value="UTF-8"/>
<property name="cacheSeconds" value="60"/>
</bean>
<bean  id="webBindingInitializer" class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
<property name="conversionService">
<bean class="org.springframework.format.support.FormattingConversionServiceFactoryBean"></bean>
</property>
<property name="validator" ref="validator"/>
</bean>


实体类添加验证注解

这里贴出部分代码,知道如何加注解即可:

import com.lemontree.common.utils.AjaxResult;
import com.lemontree.common.utils.StringUtil;
import com.lemontree.common.utils.email.EmailUtils;
import org.hibernate.validator.constraints.NotEmpty;

import java.util.Date;

public class User {
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column user.id
*
* @mbg.generated Thu Mar 16 13:27:38 CST 2017
*/
private Integer id;

/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column user.user_name
*
* @mbg.generated Thu Mar 16 13:27:38 CST 2017
*/
@NotEmpty(message = "用户名不能为空")
private String userName;

/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column user.password
*
* @mbg.generated Thu Mar 16 13:27:38 CST 2017
*/
@NotEmpty(message = "密码不能为空")
private String password;
}


控制器验证注解添加

将@Validated 注解跟在实体类前面,BindingResult紧跟其后:

@RequestMapping(value = "/login.htm", method = RequestMethod.POST)
public @ResponseBody AjaxResult login(@Validated User user, BindingResult bindingResult,
HttpServletRequest request, HttpServletResponse response) {
if (bindingResult.hasErrors()){
List<FieldError> errorses = bindingResult.getFieldErrors();
if (CollectionUtils.isNotEmpty(errorses)){
errorses.forEach(item->{
System.out.println(item.getDefaultMessage());
});
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring mvc