博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring进行表单验证
阅读量:6771 次
发布时间:2019-06-26

本文共 3677 字,大约阅读时间需要 12 分钟。

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

开发环境

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

POM文件如下:

pom.xml

 

4.0.0
com.tianmaying
springboot-form-validation-demo
0.0.1-SNAPSHOT
jar
springboot-form-validation-demo
Springboot form validation demo
org.springframework.boot
spring-boot-starter-parent
1.2.5.RELEASE
UTF-8
1.8
org.springframework.boot
spring-boot-starter-thymeleaf
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-maven-plugin

通过标注设置验证规则

我们需要验证的是提交上来的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) // 1    private String name;    @Size(min=10, max=300)// 2    private 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

 

    天码营经验: Spring表单验证    

表单处理演示

friend:

Name Error

message:

message Error

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;@SpringBootApplicationpublic 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.cnblogs.com/sharpest/p/8665374.html

你可能感兴趣的文章
ruby正则匹配回车换行符
查看>>
iOS开发系列之运动事件
查看>>
《C++ Primer Plus》14.4 类模板 学习笔记
查看>>
【已更新】【原创】Chrome53 最新版惊现无厘头卡死 BUG!
查看>>
【Java基础】13、抽象方法不能是static或native或synchroniz 原因及误解
查看>>
Cookie 与 sessonID
查看>>
一键部署Drupal开源内容管理系统
查看>>
java程序中如何为一个while(true)循环计时,超过一定时间比如10个小时就退出循环?...
查看>>
Unity3D Shader 入门
查看>>
WPF模板(二)应用
查看>>
区块链的硬分叉、软分叉介绍
查看>>
Eclipse自动输入提示
查看>>
奥巴马专用直升机被曝飞机蓝图被伊朗P2P用户分享
查看>>
mysql的timeout
查看>>
华为失意老员工的感悟:失去梦想,我们还能拥有什么?
查看>>
[WP8.1UI控件编程]Windows Phone理解和运用ItemTemplate、ContentTemplate和DataTemplate
查看>>
UltraISO制作U盘启动盘安装Win7/9/10系统攻略
查看>>
自建mail服务器之二:hmailserver
查看>>
如果有一天,我老无所依,请把我埋在新闻里!
查看>>
高效使用hibernate-validator校验框架
查看>>