JSR303实现数据校验案例

摘要:
JSR303实现了数据验证案例1。包指南˂!
JSR303实现数据校验案例

jr303_01

jr303_02

1、导包

<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-validator -->
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-validator</artifactId>
      <version>5.4.1.Final</version>
    </dependency>

2、实体类

package com.yl.bean;

import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.NotEmpty;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;

/**
 * 图书实体类
 */
@Data
@NoArgsConstructor
public class Book implements Serializable {
    private Integer id;
    @NotEmpty(message = "书名不能为空")
    private String name;
    private String author;
    private Date date;
    private Float price;
}

3、表单

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%--
  Created by IntelliJ IDEA.
  User: aq
  Date: 2020/10/26
  Time: 21:10
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>
<head>
    <title>Add</title>
</head>
<body>
<form:form modelAttribute="book" action="${pageContext.servletContext.contextPath}/book/add" method="post">
    书名:<form:input path="name"/><form:errors path="name" cssStyle="color: red"></form:errors><br>
    作者:<form:input  path="author"/><br>
    出版日期:<form:input path="date"/><br>
    价格:<form:input path="price"/><br>
    <button type="submit">添加</button>
</form:form>
</body>
</html>

4、控制器

package com.yl.controller;

import com.github.pagehelper.PageInfo;
import com.yl.bean.Book;
import com.yl.service.IBookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.Errors;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.bind.support.SessionStatus;
import org.springframework.web.servlet.ModelAndView;

import javax.validation.Valid;
import java.util.List;

/**
 * 图书控制器类
 */
@Controller
@RequestMapping("/book")
@SessionAttributes(value = {"pageBook","queryBook"}, types = {PageInfo.class, String.class, Book.class})
public class BookController {
    @Autowired
    private IBookService bookService;//图书业务层对象

    /**
     * 添加图书
     */
    @RequestMapping("/add")
    public ModelAndView add(@Valid Book book, Errors errors,SessionStatus sessionStatus) {
        ModelAndView modelAndView=new ModelAndView();

        if (errors.hasErrors()){
            modelAndView.setViewName("add");
            return modelAndView;
        }
        //调用业务层添加图书方法
        bookService.add(book);

        return queryByCondition(null,1);
    }

    /**
     *添加图书跳转页面
     */
    @RequestMapping("/addSkip")
    public ModelAndView addSkip(){
        ModelAndView modelAndView=new ModelAndView();
        modelAndView.addObject("book",new Book());
        modelAndView.setViewName("add");
        return modelAndView;
    }
    
}

注意:表单的modelAttribute属性值是从requsetScope中传过来的,即必须先请求控制器,在控制器中给modelAttribute赋值才能使用;默认是command的属性值,也可以自己赋值。

免责声明:文章转载自《JSR303实现数据校验案例》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MSChart 双Y轴 自适应,轴刻度坐标值美化nginx的反向代理缓存下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

跟我一起用Symfony写一个博客网站;

我的微信公众号感兴趣的话可以扫一下, 或者加微信号 whenDreams 第一部分:基础设置,跑起一个页面-首页 第一步: composer create-project symfony/framework-standard-edition 你的项目名; 创建完这个原型,我执行php bin/console server:run,可以跑起来; 那么此刻你...

(十)HttpClient以multipart/form-data上传文件

原文链接:https://blog.csdn.net/wsdtq123/article/details/78888734 POST上传文件 最早的HTTP POST是不支持文件上传的,给编程开发带来很多问题。但是在1995年,ietf出台了rfc1867,也就是《RFC 1867 -Form-based File Upload in HTML》,用以支持文...

Flask(三)

一.wtforms 安装:pip3 install wtforms 用法一: from flask import Flask, render_template, request, redirect from wtforms import Form from wtforms.fields import simple from wtforms import v...

odoo 项目经验1

1.在xml中的domain表达式解析:|,&,!以及表示此意义的符号,都是遵从栈的规则(后进先出),右为栈底,所以从最左端的符号开始判断。 2.xml中也可以进行时间计算,比如在一周内的为即将开始等等等。 可参照https://www.cnblogs.com/hellojesson/p/8144474.html <filter strin...

Django 之 Form 组件

常用功能 From 组件主要有以下几大功能: 生成 HTML 标签 验证用户数据(显示错误信息) HTML Form 提交保留上次提交数据 初始化页面显示内容 小试牛刀 下面我们通过 Form 组件来生成 HTML 标签和验证用户提交的数据以及保留上次提交的数据。 创建 Form 类 form_verify.py from django import...

HTTP请求中的form data和request payload的区别

国际互联网工程任务组(ietf)对http协议中payload的解释 HTTP messages MAY transfer a payload if not otherwise restricted by the request method or response status code. The payload consists of m...