zoukankan      html  css  js  c++  java
  • spring mvc:数据验证

    做学生登录信息必填项验证。

    student信息有:id,姓名,年龄

    Student.java

    public class Student {
    
    	
    	private Integer id;
    	private Integer age;
    	private String name;
    	
    	public Integer getId() {
    		return id;
    	}
    	public void setId(Integer id) {
    		this.id = id;
    	}
    	
    	public Integer getAge() {
    		return age;
    	}
    	public void setAge(Integer age) {
    		this.age = age;
    	}
    	
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	
    	
    }
    

      StudentValidator.java数据验证代码

    import org.springframework.stereotype.Service;
    import org.springframework.validation.Errors;
    import org.springframework.validation.ValidationUtils;
    import org.springframework.validation.Validator;
    
    @Service
    public class StudentValidator implements Validator 
    {
    
    	
    	public boolean supports(Class<?> clazz){
    		return Student.class.isAssignableFrom(clazz);
    	}
    
    	public void validate(Object target, Errors errors) {        
    	      ValidationUtils.rejectIfEmptyOrWhitespace(errors, "name", "required.name","Field name is required.");
    	}
    
    }
    

      注意:StudentValidator 需要加@Service注解,否则自动装载会报错,找不到bean

    自动注入的时候,找不到对应的bean
    原因是:对应要注入的实现类没有 加注解,如dao层 @Repository  如service层  @Service
     
    StudentController.java
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.bind.WebDataBinder;
    import org.springframework.web.bind.annotation.InitBinder;
    import org.springframework.web.bind.annotation.ModelAttribute;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.ui.Model;
    import org.springframework.validation.BindingResult;
    import org.springframework.validation.Validator;
    import org.springframework.validation.annotation.Validated;
    
    
    @Controller
    public class StudentController {
    
    		@Autowired
    		@Qualifier("studentValidator")
    		private Validator validator;
    	
    		
    		@InitBinder
    		private void initBinder(WebDataBinder binder) {
    		      binder.setValidator(validator);
    		}
    	
    		//前端from数据引用:commandName
    		 @ModelAttribute("student")
    		   public Student createStudentModel() {    
    		      return new Student();
    		   }
    	
    	
    		@RequestMapping(value = "/student", method = RequestMethod.GET)
    	   public ModelAndView student() {
    	      return new ModelAndView("student", "command", new Student());
    	   }
    
    	  
    
    	   @RequestMapping(value = "/addStudent", method = RequestMethod.POST)
    	   public String addStudent(@ModelAttribute("student") @Validated Student student, 
    	      BindingResult bindingResult, Model model) {
    
    	      if (bindingResult.hasErrors()) {
    	         return "student";
    	      }
    	      model.addAttribute("name", student.getName());
    	      model.addAttribute("age", student.getAge());
    	      model.addAttribute("id", student.getId());
    
    	      return "student_result";
    	   }
    	
    	
    	
    }
    

      下面来看看jsp代码

    student.jsp

    <%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%>
    <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <%@ page isELIgnored="false" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Spring MVC表单处理</title>
    </head>
    <style>
    .error {
        color: #ff0000;
    }
    
    .errorStyle {
        color: #000;
        background-color: #ffEEEE;
        border: 3px solid #ff0000;
        padding: 8px;
        margin: 16px;
    }
    </style>
    <body>
    
        <h2>学生信息</h2>
        <form:form method="POST" action="/hello/addStudent"  commandName="student">
            <form:errors path="*" cssClass="errorStyle" element="div" />
            <table>
                <tr>
                    <td><form:label path="name">姓名:</form:label></td>
                    <td><form:input path="name" /></td>
                    <td><form:errors path="name" cssClass="error" /></td>
                </tr>
                <tr>
                    <td><form:label path="age">年龄:</form:label></td>
                    <td><form:input path="age" /></td>
                </tr>
                <tr>
                    <td><form:label path="id">编号:</form:label></td>
                    <td><form:input path="id" /></td>
                </tr>
                <tr>
                    <td colspan="2"><input type="submit" value="提交" /></td>
                </tr>
            </table>
        </form:form>
    </body>
    </html>
    

      

    这一块的代码:<form:form method="POST" action="/hello/addStudent" commandName="student">,其中commandName中的student是,studentController中的createStudentModel的定义.
    这一块的代码:<form:errors path="*" cssClass="errorStyle" element="div" />,cssClass为样式代码,element元素为div.
     
    student_result.jsp
    <%@ page contentType="text/html; charset=UTF-8" %>
    <%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <%@ page isELIgnored="false" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>spring mvc表单处理</title>
    </head>
    <body>
    
    
    <h2>提交的学生信息</h2>
    <table>
    	<tr>
    		<td>名称:</td>
    		<td>${name}</td>
    	</tr>
    	<tr>
    		<td>年龄:</td>
    		<td>${age}</td>
    	</tr>
    	<tr>
    		<td>编号:</td>
    		<td>${id}</td>
    	</tr>
    </table>
    
    </body>
    </html>
    

      

  • 相关阅读:
    UVa 10118 记忆化搜索 Free Candies
    CodeForces 568B DP Symmetric and Transitive
    UVa 11695 树的直径 Flight Planning
    UVa 10934 DP Dropping water balloons
    CodeForces 543D 树形DP Road Improvement
    CodeForces 570E DP Pig and Palindromes
    HDU 5396 区间DP 数学 Expression
    HDU 5402 模拟 构造 Travelling Salesman Problem
    HDU 5399 数学 Too Simple
    CodeForces 567F DP Mausoleum
  • 原文地址:https://www.cnblogs.com/achengmu/p/8892839.html
Copyright © 2011-2022 走看看