十六、表单的验证(使用Hibernate-validate)SpringMVC ValidFormInput
//--------------------------------------------------------------------------- // 1/4 package test.SpringMVC; //D:\Indigo_workspace2\HiSpringMVC\src\test\SpringMVC\formController.java import java.util.Map; import javax.validation.Valid; import org.springframework.stereotype.Controller; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller @RequestMapping("/form") public class formController { //http://localhost:8080/HiSpringMVC/form/add @RequestMapping(value="/add",method=RequestMethod.POST) public String add(@Valid User u,BindingResult br){ if(br.getErrorCount()>0){ return "addUser"; } return "showUser"; } //http://localhost:8080/HiSpringMVC/form/add @RequestMapping(value="/add",method=RequestMethod.GET) public String add(Map<String,Object> map){ map.put("user",new User()); return "addUser"; } } //--------------------------------------------------------------------- /* validation-api-1.1.0.Final.jar classmate-1.2.0.jar hibernate-validator-5.2.4.Final.jar hibernate-validator-annotation-processor-5.0.1.final.jar jboss-logging-3.1.3.GA.jar */ // 2/4 package test.SpringMVC; //D:\Indigo_workspace2\HiSpringMVC\src\test\SpringMVC\User.java import java.util.Date; import javax.validation.constraints.Past; import org.hibernate.validator.constraints.NotEmpty; import org.springframework.format.annotation.DateTimeFormat; public class User { private int id; private int age; private String city; @NotEmpty private String name; @Past //ps:@Past表示时间必须是一个过去值 @DateTimeFormat(pattern="yyyy-MM-dd") private Date birthday; //vvvvvvvvvvvvvvvvvvvvvv @Override public String toString() { return "User [id=" + id + ", name=" + name + ", birthday=" + birthday + "]"; } //^^^^^^^^^^^^^^^^^^^^^^ public String getCity() { return city; } public void setCity(String city) { this.city = city; } public int getId() { return id; } public void setId(int id) { this.id = id; } public User(){ System.out.println("User()"); } public User(String name,int age){ this.name= name; this.age= age; } public User(String name,int age, Date birthday){ this.name= name; this.age= age; this.birthday=birthday; } public String getName() { return name; } public void setName(String name) { this.name = name; System.out.println("setName(name) "); } public int getAge() { return age; } public void setAge(int age) { this.age = age; System.out.println("setAge(age)"); } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } } //-------------------------------------------------------------- // 3/4 <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!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=ISO-8859-1"> <title>D:\Indigo_workspace2\HiSpringMVC\WebContent\WEB-INF\jsp\showUser.jsp</title> </head> <body> showUser:<br/> <c:set var="user" value="${requestScope.user}" /> ${user.id }-${user.name }-[${user.birthday }]<br/> <br/> </body> </html> //----------------------------------------------------------- // 4/4 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> // <%@ taglib prefix="struts" uri="/struts-tags" %> <%@taglib uri="http://www.springframework.org/tags/form" prefix="form" %> <!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>D:\Indigo_workspace2\HiSpringMVC\WebContent\WEB-INF\jsp\addUser.jsp</title> </head> <body> <form:form action="/HiSpringMVC/form/add" method="post" modelAttribute="user"> id:<form:input path="id"/><form:errors path="id"/><br> name:<form:input path="name"/><form:errors path="name"/><br> birth:<form:input path="birthday"/><form:errors path="birthday"/> <input type="submit" value="submit"> </form:form> </body> </html>
十六、表单的验证(使用Hibernate-validate)及国际化
https://www.cnblogs.com/sunniest/p/4555801.html
1.导入Hibernate-validate需要的jar包
 (未选中不用导入)
(未选中不用导入)

2.编写实体类User并加上验证注解
public class User {
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Date getBirth() {
        return birth;
    }
    public void setBirth(Date birth) {
        this.birth = birth;
    }
    @Override
    public String toString() {
        return "User [id=" + id + ", name=" + name + ", birth=" + birth + "]";
    }    
    private int id;
    @NotEmpty
    private String name;
    @Past
    @DateTimeFormat(pattern="yyyy-MM-dd")
    private Date birth;
}
ps:@Past表示时间必须是一个过去值
3.在jsp中使用SpringMVC的form表单
    <form:form action="form/add" method="post" modelAttribute="user">
        id:<form:input path="id"/><form:errors path="id"/><br>
        name:<form:input path="name"/><form:errors path="name"/><br>
        birth:<form:input path="birth"/><form:errors path="birth"/>
        <input type="submit" value="submit">
    </form:form> 
ps:path对应name
4.Controller中代码
@Controller
@RequestMapping("/form")
public class formController {
    @RequestMapping(value="/add",method=RequestMethod.POST)    
    public String add(@Valid User u,BindingResult br){
        if(br.getErrorCount()>0){            
            return "addUser";
        }
        return "showUser";
    }
    
    @RequestMapping(value="/add",method=RequestMethod.GET)
    public String add(Map<String,Object> map){
        map.put("user",new User());
        return "addUser";
    }
}
ps:
1.因为jsp中使用了modelAttribute属性,所以必须在request域中有一个"user".
2.@Valid 表示按照在实体上标记的注解验证参数
3.返回到原页面错误信息回回显,表单也会回显
5.错误信息自定义
在src目录下添加locale.properties
NotEmpty.user.name=name can't not be empty Past.user.birth=birth should be a past value DateTimeFormat.user.birth=the format of input is wrong typeMismatch.user.birth=the format of input is wrong typeMismatch.user.id=the format of input is wrong
在SpringMVC配置文件中配置
    <!-- configure the locale resource -->
    <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
        <property name="basename" value="locale"></property>
    </bean>
6.国际化显示
在src下添加locale_zh_CN.properties
username=账号 password=密码
locale.properties中添加
username=user name password=password
创建一个locale.jsp
  <body>
    <fmt:message key="username"></fmt:message>
    <fmt:message key="password"></fmt:message>
  </body>
在SpringMVC中配置
    <!-- make the jsp page can be visited -->
    <mvc:view-controller path="/locale" view-name="locale"/>
让locale.jsp在WEB-INF下也能直接访问
最后,访问locale.jsp,切换浏览器语言,能看到账号和密码的语言也切换了

 

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号