ssm+shiro框架搭建笔记(7)

7 篇文章 0 订阅

配置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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值