zoukankan      html  css  js  c++  java
  • 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/

  • 相关阅读:
    织梦开发——相关阅读likeart应用
    织梦标签教程
    织梦专题调用代码
    HIT 2543 Stone IV
    POJ 3680 Intervals
    HIT 2739 The Chinese Postman Problem
    POJ 1273 Drainage Ditches
    POJ 2455 Secret Milking Machine
    SPOJ 371 Boxes
    HIT 2715 Matrix3
  • 原文地址:https://www.cnblogs.com/zemliu/p/3227136.html
Copyright © 2011-2022 走看看