首页 > 编程语言 > 详细

Spring MVC 的表单校验

时间:2020-08-31 15:00:10      阅读:58      评论:0      收藏:0      [点我收藏+]

需要的jar包

  <dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>1.1.0.Final</version>
  </dependency>


  <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>5.1.2.Final</version>
  </dependency>

bean 层

public class User {
?
   /**
    * @NotNull : 不为空对象
    * @NotEmpty:不为空字符串
    * @Size(min = 6,max = 12,message = "错误") :长度 min 最小,max 最大,message = "",自定义错误信息
    */
   @NotNull
   @NotEmpty
   @Size(min = 6,max = 12,message = "错误")
   private String uName;
   @NotNull
   @NotEmpty
   @Size(min = 6,max = 12)
   private String uLoginId;
   @NotNull
   @NotEmpty
   @Size(min = 6,max = 12)
   private String uPwd;
   private Integer sex;

  // 省略了getter和setter方法
}

controller 层

@Controller
@RequestMapping("/user")
public class UserController {
  @RequestMapping("/addInit")
   public String toAserAdd(Model model){
       /**
        * 前往界面是需要在 model 重加入 bean 且该 key 需要和 form:form 的 modelAttribute="" 的属性相同
        */
       if(model.getAttribute("user")== null){
           model.addAttribute("user",new User("123456","123456","123456",2));
      }
       return "user/userAdd";
  }
?
   /**
    * @Valid 开启表单校验
    * @ModelAttribute("user") 获取变得的值在封装成对应的对象
    * @param model
    * @param user
    * @param result:如果不满足校验的要求抛出的异常
    * @return
    */
   @RequestMapping("/add")
   public String userAdd(Model model, @Valid @ModelAttribute("user") User user, BindingResult result){
       System.out.println(user);
       if (result.hasErrors()){
           toAserAdd(model);
      }
       return "user/userAdd";
  }

}

jsp 界面

<body>
   <!--
       form : xxx 是 spring MVC 的表单输入验证
           modelAttribute:必须从后台传入这一个 model
           form:xxx 下面的 path="" 的属性只需要和 bean 层的属性名相同
   -->
   <form:form action="${pageContext.request.contextPath}/user/add" modelAttribute="user">
       <table>
           <tr>
               <td><form:label path="uName">用户名</form:label></td>
               <td><form:input path="uName"></form:input></td>
               <td><form:errors path="uName"></form:errors></td>
           </tr>
           <tr>
               <td><form:label path="uLoginId">登录账号</form:label></td>
               <td><form:input path="uLoginId"></form:input></td>
               <td><form:errors path="uLoginId"></form:errors></td>
           </tr>
           <tr>
               <td><form:label path="uPwd">登录密码</form:label></td>
               <td><form:password path="uPwd"></form:password></td>
               <td><form:errors path="uPwd"></form:errors></td>
           </tr>
           <tr>
               <td> <form:label path="sex">性别</form:label> </td>
               <td>
                   <form:radiobutton path="sex" value="1" label="男" />
                   <form:radiobutton path="sex" value="2" label="女" />
               </td>
               <td style="color: red;"> <form:errors path="sex"></form:errors> </td>
           </tr>
           <tr>
               <td rowspan="3">
                   <input type="submit" value="提交">
               </td>
           </tr>
       </table>
   </form:form>
</body>

TomCat 9.x.x 映入标签遇到的问题

  使用时需要加入

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

  如果无法解析 uri="http://www.springframework.org/tags/form" 可能时 Tomcat 9.x.x 的问题

  需要解压 spring-webmvc-X.X.X.RELEASE.jar 包把 jar 包下面的 META-INF 中的 .tld 文件放入到 WEB-INF下

Spring MVC 的表单校验

原文:https://www.cnblogs.com/luoyunyan/p/13589207.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!