Index / Spring

Spring 表单验证 Validating Form Input

原文:https://ichochy.com/posts/spring/20211105.html

表单接交数据并完成数据验证,约束用户数据的接交,已解决数据的正确性和完整性,达到系统的可用性。

开发工具

创建项目

参照《Spring 表单提交,Form Submissionhttps://ichochy.com/posts/20210530.html

项目目录

├── pom.xml
└──src
    └── main
        ├── java
        │   └── com
        │       └── ichochy
        │           └── example
        │               ├── ExampleApplication.java
        │               └── form
        │                   ├── Form.java
        │                   └── FormController.java
        └── resources
            ├── application.properties
            ├── static
            └── templates
                ├── form.html
                └── result.html

表单验证

修改 pom.xml

添加验证库

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

修改类 Form

添加验证注解

Form.java

/*
 * Copyright (c) 2021 iChochy
 * URL:https://ichochy.com
 * Date:2021/06/10 19:36:10
 */

package com.ichochy.example.form;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;

/**
 * 表单信息
 */
public class Form {

    @NotNull
    private long id;
    @NotBlank
    private String title;
    @Pattern(regexp = "https://\\w+.com")
    private String url;
    @NotBlank
    private String content;
    
    //get set ....
}

修改控制器

添加 @Valid

    public String submitForm(@Valid Form form, BindingResult bindingResult, Model model) {
        model.addAttribute("form", form);
        if(bindingResult.hasErrors()){
            return "form";
        }
        return "result";
    }

修改页面 form

添加错误提示信息

<p>Title:</p>
<p>
    <input type="text" th:field="*{title}"/>
    <span th:if="${#fields.hasErrors('title')}" th:errors="*{title}"></span>
</p>

运行项目

Dubug 运行项目

main 方法启动项目

/*
 * Copyright (c) 2021 iChochy
 * URL:https://ichochy.com
 * Date:2021/06/09 22:07:09
 */

package com.ichochy.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ExampleApplication {

    public static void main(String[] args) {
        SpringApplication.run(ExampleApplication.class, args);
    }
}

服务默认端口号为8080

162314892348552510

浏览器访问

直接访问:http://localhost:8080/form 162333229951452314

验证提交信息

提交信息不能通过验证,页面会提示错误信息

16360948302181421

查看表单信息

Submit 提交表单后可以查看到表单提交的信息 162333234351368115

总结

添加 @Valid 注解完成表单的后端验证,快速、便捷、安全。

GitHub

https://github.com/iChochy/Example

引用