配置validationMessage校验
(1).添加依赖包。
pom文件添加以下配置信息:
<!-- springMVC服务端校验 start --> <dependency> <version>5.1.2.Final</version> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> </dependency> <dependency> <version>1.1.0.Final</version> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.22</version> </dependency> <!-- springMVC服务端校验 end -->
(2).配置spring-mvc.xml文件。
文件添加以下配置信息:
<!-- SpringMVC校验器 --> <mvc:annotation-driven validator="validator" /> <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="basenames"> <list> <value>classpath:validation/sysValidationMessages</value> </list> </property> <!-- 资源文件编码格式 --> <property name="fileEncodings" value="utf-8" /> <!-- 对资源文件内容缓存时间,单位秒 --> <property name="cacheSeconds" value="120" /> </bean>
(3).添加资源文件:sysValidationMessages.properties,然后填写校验提示信息。
(4).创建校验分组接口类,以添加为例子。
package com.lcl.validator;
/**
*
* @ClassName: Add
* @Description: 添加校验组
* @author liuchaolong
* @date 2017年1月13日 下午2:30:04
*
*/
public interface Add {
}
(5).测试代码。
为实体类添加校验,此处省略get、set方法
package com.lcl.sys.model;
import java.util.Date;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.NotBlank;
import com.lcl.validator.Add;
/**
* 权限实体类
* @author lcl
*
*/
public class PermissionInfo {
private String id;
private String pid;
@NotBlank(message = "{PermissionInfo.name.NotBlank}", groups = {Add.class})
private String name;
@NotBlank(message = "{PermissionInfo.url.NotBlank}", groups = {Add.class})
private String url;
@NotBlank(message = "{PermissionInfo.unique.NotBlank}", groups = {Add.class})
private String unique;
@NotBlank(message = "{PermissionInfo.type.NotBlank}", groups = {Add.class})
private String type;
private String icon;
@NotBlank(message = "{PermissionInfo.isVisiable.NotBlank}", groups = {Add.class})
private String isVisiable;
@NotNull(message = "{PermissionInfo.sortNum.NotNull}", groups = {Add.class})
@DecimalMin(value = "0", message = "{PermissionInfo.sortNum.DecimalMin}", groups = {Add.class})
private Integer sortNum;
private String creater;
private Date createTime;
private String updater;
private Date updateTime;
private String pids;
private boolean isParent;
Controller类使用添加权限方法的时候:
/**
*
* @Title: insertPermission
* @Description: 添加权限
* @param @param permissionInfo
* @return int 返回类型
* @throws
*/
@RequestMapping("insertPermission")
@ResponseBody
public Map<String, Object> insertPermission(@Validated({Add.class}) PermissionInfo permissionInfo, BindingResult result){
Map map = new HashMap();
map = this.getValidatedInfo(result);
//校验表单 if(MessageConstant.RETURN_VALIDATE_MSG.equals(map.get("msg")))return map;
UserInfo userInfo = this.getUserInfo();
Map<String, Object> oMap = new HashMap<String, Object>();
int i = sysService.insertPermission(permissionInfo,userInfo);
if(i==0){
oMap.put("objectInfo", "添加失败");
oMap.put("success", "error");
}else{
oMap.put("objectInfo", "添加成功");
oMap.put("success", "success");
}
return oMap;
}
注:@Validated({Add.class}) 表示分组,此时表示add组,校验会自动调用实体类Add.class的校验信息;this.getValidatedInfo(result)自己封装的方法在基类中实现。RETURN_VALIDATE_MSG常量表示验证错误,信息不合法。
getValidatedInfo方法实现如下:
/**
*
* @Title: doValidated
* @Description:获取提交表单校验信息
* @return Map<String,Object> 返回类型
* @throws
*/
protected Map<String, Object> getValidatedInfo(BindingResult result) {
Map map = new HashMap();
Map<String, Object> errorMap = new HashMap<String, Object>();
String msg = MessageConstant.RETURN_SUCCESS_MSG;
if ( result.hasErrors() ) {
List<FieldError> errors = result.getFieldErrors();
for (FieldError fieldError : errors) {
if (!errorMap.containsKey(fieldError.getField())) {
errorMap.put(fieldError.getField(), fieldError.getDefaultMessage());
}
}
msg = MessageConstant.RETURN_VALIDATE_MSG;
map.put("errorinfo", errorMap);
map.put("msg", msg);
map.put("success", "error");
return map;
}
map.put("msg", msg);
return map;
}