转自:https://www.tianmaying.com/tutorial/spring-form-validation

开发环境

  • IDE+Java环境(JDK 1.7或以上版本)
  • Maven 3.0+(Eclipse和Idea IntelliJ内置,如果使用IDE并且不使用命令行工具可以不安装)

POM文件如下:

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.tianmaying</groupId><artifactId>springboot-form-validation-demo</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>springboot-form-validation-demo</name><description>Springboot form validation demo</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.2.5.RELEASE</version><relativePath/></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

通过标注设置验证规则

我们需要验证的是提交上来的HelloMessage信息,因此我们给这个类增加标注。我们希望打招呼的对象(name属性)的长度是2到30之间,打招呼的内容(message属性)的长度是10到300之间。让我们来看看如何进行标注:

HelloMessage.java

package com.tianmaying.springboot.formvalidation;import javax.validation.constraints.Size;public class HelloMessage {@Size(min=2, max=30) // 1private String name;@Size(min=10, max=300)// 2private String message;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}}

12两处通过简单的标注设定了验证规则,@Size(min=2, max=30)表示对应属性的字符串长度必须在2到30之间。当然,用于描述验证的规则的标注还有很多,大家可以去异步这里了解。

在Controller中进行验证

Controller中的代码相比无表单验证时,有了几处小的修改:

SayHelloController.java

    @RequestMapping(value="/sayhello", method=RequestMethod.POST)public String sayHello(@Valid HelloMessage helloMessage, BindingResult bindingResult, Model model) {if (bindingResult.hasErrors()) {return "sayhello";}model.addAttribute("helloMessage", helloMessage);return "message";}

sayHello方法中包含了三个参数,HelloMessage参数是表单绑定的待验证的对象,BindingResult包含了验证结果信息,可以通过bindingResult.hasErrors()来判断验证是否通过,Model参数则是用来保存所有用于渲染View的数据。这里的逻辑时如果验证包含错误则返回原页面(这是页面中会显示出错误信息),验证通过则显示message.html页面。

注意

BindingResult参数必须紧跟着HelloMessage参数,否则可能无法得到正确的验证结果。

错误信息的显示

为了让提交表单的页面能够在验证有错误时显示错误信息,我们需要增加一些显示错误信息的HTML代码。

sayhello.html

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head><title>天码营经验: Spring表单验证</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body><h1>表单处理演示</h1><form action="#" th:action="@{/sayhello}" th:object="${helloMessage}" method="post"><p>friend: <input type="text" th:field="*{name}" /></p><p th:if="${#fields.hasErrors('name')}" th:errors="*{name}">Name Error</p><p>message: <input type="text" th:field="*{message}" /></p><p th:if="${#fields.hasErrors('message')}" th:errors="*{message}">message Error</p><p><input type="submit" value="Submit" /> <input type="reset" value="Reset" /></p></form>
</body>
</html>

th:object="{helloMessage}"表示这是一个bean-backed的表单,在每个表单域的后面,都跟随着一个<P>元素来显示错误验证错误信息,比如<p th:if="${#fields.hasErrors('name')}" th:errors="*{name}">Name Error</p>

Run起来

不解释,看这里

package com.tianmaying.springboot.formvalidation;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class App {public static void main(String[] args) {SpringApplication.run(App.class, args);}}

这样表单验证就圆满成功啦!再来总结一下,基于Spring进行表单验证你只需要这三步:

  • 通过标注设置验证规则,注意你还可以使用一些扩展实现提供的规则,比如验证是否为合法的email
  • 在Controller中通过@Valid标注和BindingResult进行规则验证
  • 在页面中展现规则,如果是返回JSON的REST服务,则不需要在页面中显示,在Controller中要根据BindingResult的结果生成对应的JSON数据

转自:https://www.tianmaying.com/tutorial/spring-form-validation

参考代码要获取本文的参考代码,请访问: https://www.tianmaying.com/tutorial/spring-form-validation/repo

Spring进行表单验证相关推荐

  1. Spring MVC表单验证(带批注)

    这篇文章提供了一个简单HTML表单验证示例. 它基于带有注释的Spring MVC示例. 该代码可在GitHub的Spring-MVC-Form-Validation目录中找到. 数据 在此示例中,我 ...

  2. SSM框架笔记14:Spring MVC表单验证

    Spring MVC表单验证   在Spring MVC中,表单验证有三种方法.   一.基本校验 这种方法是基于handler的,优点是定义方便,缺点是不便于复用. 1.两个接口:Errors/Bi ...

  3. Spring MVC表单验证

    看登录控制器代码: @RequestMapping(method=RequestMethod.POST,path="/login")public void login(@Valid ...

  4. Spring Boot 表单验证

    1.对实体类属性的注解例子如下:

  5. Spring MVC 第四章:Form表单验证-JSR303和Spring框架验证以及国际化语言、Filter过滤器

    Form表单的验证验证,就是在提交表单的时候进行验证是否为空,是否满足特定条件才可以创建.常见的表单有前端验证和后端验证. 其中,前端验证有:HTML验证,JS验证,Jquery验证. 后端验证有:J ...

  6. 使用Spring 3 MVC处理表单验证

    本文是有关Spring 3的系列文章的一部分.该系列的早期文章是使用Spring 3 MVC的Hello World和使用Spring 3 MVC的 Handling Forms . 现在让我们更深入 ...

  7. Spring MVC和JQuery用于Ajax表单验证

    在本教程中,我们将看到如何使用Ajax和Spring MVC和JQuery在服务器端验证表单. Spring MVC为通过注释驱动的配置采用Ajax提供了非常方便的过程. 我们将使用此注释驱动的配置以 ...

  8. Spring in Action:@Vaild 表单验证不起作用

    在按照<Spring in Action>进行实践的过程中,发现@Vaild表单验证不起作用.最后查明原因如下: 仔细阅读<Spring in Action>,书中说: 从Sp ...

  9. Spring表单验证

    表单验证 给表单添加验证的步骤如下 1.在 pom.xml 里添加 hibernate-validator 依赖 http://hibernate.org/validator/documentatio ...

最新文章

  1. Linux Shell 命令--tr
  2. Word组件 Spire.Doc for .NET V6.0.3发布 | 修复多个重大bug
  3. 图像拼接 SIFT资料合集
  4. Console类浅谈
  5. CG CTF WEB file_get_contents
  6. tcp checksum incorrect_TCP 协议:滑动窗口
  7. 24岁的程序员,似乎已经看到了30岁后的自己
  8. java date 时分秒_java Date 获得时分秒代码
  9. 【Elasticsearch】 es 集群发现机制
  10. FreeRTOS源码分析与应用开发08:任务通知
  11. OSi七成模型 tcp/ip网络模型
  12. 内网计算机ip地址查询,内网ip地址怎么查看_怎么查看内网ip地址_如何查看电脑的内网IP地址...
  13. 一文读懂LiveData 粘性事件
  14. 设计手机APP界面的感想
  15. Sqoop导入导出基本操作
  16. vscode配置prettier格式化工具
  17. 手机lightroom预设位置
  18. JAVA学习内容汇总(一)
  19. # 英语听抄 (英)
  20. 一文饱览年度AI盛宴!WAVE SUMMIT+2021峰会精彩回顾

热门文章

  1. thread.sleep是让哪个线程休眠_java开发两年,这些线程知识你都不知道,你怎么涨薪?...
  2. 我从阿里面试回来,想和Java程序猿谈一谈
  3. android 锁屏应用,创建一个Android锁屏应用。
  4. 双系统gazebo闪退_记录Ubuntu16.04下PX4联合Gazebo仿真时遇到的问题与解决方法
  5. aix解压tgz_AIX 上压缩与解压缩 各种文件格式原理说明
  6. 对图像数据最主要的预处理: Resize
  7. LPC55S69 IoT Kit专属 Micropython模组和库函数简介
  8. 信号与系统2021春季课程小论文批改
  9. Arduino生成ATmega8的运行程序并下载
  10. UPC2710T放大电路功率增益测试