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>
    

      

  • 相关阅读:
    P4047 部落划分
    P1440 求m区间的最小值
    P2880 平衡的阵容
    P2700 逐个击破
    P2814 家谱 map模版
    P4403 秦腾与教学评估
    无油无糖低脂酸奶芒果蛋糕
    紫薯铜锣烧
    Spring In Action ③
    Spring In Action ②
  • 原文地址:https://www.cnblogs.com/achengmu/p/8892839.html
Copyright © 2011-2022 走看看