• Spring Validation


    Spring Validation模块用于表单数据验证配置,示例如下

    依赖Jar包

            <dependency>
                <groupId>javax.validation</groupId>
                <artifactId>validation-api</artifactId>
            </dependency>
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-validator</artifactId>
            </dependency>

    Controller方法

        /**
         * 添加酒店
         * @param hotel
         * @param bindingResult
         * @return
         */
        @RequestMapping(value = "/add")
        // @Valid注释表示需要验证
        public String addHotel(@Valid Hotel hotel,
                               BindingResult bindingResult,
                               Model model) {
            if (hotel.getName() == null) {
                // 显示添加页面
                model.addAttribute(HOTEL, new Hotel());
                return "hotel/addHotel";
            } else {
                // 验证失败时回到本页面并显示错误信息
                if (bindingResult.hasErrors())
                    return "hotel/addHotel";
                hotelService.addHotel(hotel);
                return "redirect:/hotel/list";
            }
        }

    需要验证的bean配置

    package com.qunar.bean;
    
    import org.hibernate.validator.constraints.Length;
    import org.hibernate.validator.constraints.NotEmpty;
    
    import javax.validation.constraints.NotNull;
    import javax.validation.constraints.Pattern;
    
    public class Hotel {
        
        private Integer id;
    
        
        @NotNull(message = "酒店代码不能为空")
        @NotEmpty(message = "酒店代码不能为空")
        @Pattern(regexp = "\w+",
                message = "酒店代码不能包含特殊字符")
        @Length(max = 45, message = "酒店代码最长为45个字符")
        private String code;
    
        
        @NotNull(message = "酒店名称不能为空")
        @NotEmpty(message = "酒店名称不能为空")
        @Pattern(regexp = "([\u4e00-\u9fa5]|\w)+",
                message = "酒店名称不能包含特殊字符")
        @Length(max = 100, message = "酒店名称最长为100个字符")
        private String name;
    
        
        public Integer getId() {
            return id;
        }
    
        
        public void setId(Integer id) {
            this.id = id;
        }
    
        
        public String getCode() {
            return code;
        }
    
        
        public void setCode(String code) {
            this.code = code == null ? null : code.trim();
        }
    
        
        public String getName() {
            return name;
        }
    
        
        public void setName(String name) {
            this.name = name == null ? null : name.trim();
        }
    }

    页面

    <%--
      Created by IntelliJ IDEA.
      User: zhenwei.liu
      Date: 13-7-30
      Time: 上午11:50
      To change this template use File | Settings | File Templates.
    --%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@ taglib prefix="sf" uri="http://www.springframework.org/tags/form" %>
    <%@ page contentType="text/html;charset=UTF-8" pageEncoding="utf-8" %>
    <html>
    <head>
        <title>添加酒店</title>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    </head>
    <body>
    <sf:form action="/hotel/add" method="POST" modelAttribute="hotel">
    <table>
        <tr>
            <td align="right">酒店代码</td>
            <td><input type="text" name="code"/></td>
            <td><sf:errors path="code" cssClass="error" /> </td>
        </tr>
        <tr>
            <td align="right">酒店名称</td>
            <td><input type="text" name="name"/></td>
            <td><sf:errors path="name" cssClass="error" /> </td>
        </tr>
        <tr>
            <td colspan="2" align="center"><input type="submit" value="添加"/>
                <input type="reset" value="重置"/></td>
        </tr>
    </table>
    </sf:form>
    </body>
    </html>

    这样当提交这个这个页面表单时,就会验证hotel的各个属性,如验证不通过则回到本页面并显示错误信息

    另外,Spring支持自定义验证注解类,加入自己的验证规则,具体例子可以参考以下

    http://outbottle.com/custom-annotated-validation-with-spring-3-web-mvc/

  • 相关阅读:
    模拟实现ajax加载框
    京东晒单的js实现
    微信分享js代码(转载)
    css模拟实现selec下拉框
    网页端实现输入卡号四字隔开
    返回顶部的动态显示与隐藏
    js等比例缩放图片(转载)
    css模拟实现checkbox
    quartz的使用 Mr
    Spring声明式事务配置管理方法 Mr
  • 原文地址:https://www.cnblogs.com/zemliu/p/3227136.html
Copyright © 2020-2023  润新知