SpringMVC 使用JSR-303进行校验 @Valid示例

关于SpringMVC使用JSR-303进行校验,下面给出完整攻略:

1. 什么是JSR-303校验框架

JSR-303是Java EE 6规范中的一项内容,它定义了一套校验框架,可以让我们在JavaBean的属性上添加一些注解来描述这些属性的约束条件,然后再通过调用校验框架提供的API进行校验,从而保证JavaBean中属性的合法性。

2. 在SpringMVC中使用 JSR-303进行校验

在SpringMVC中使用JSR-303进行校验有两个步骤:

2.1 实现JavaBean并在属性上添加注解描述

示例1:

public class Book {
    @NotEmpty(message = "书名不能为空")
    private String name;

    @DecimalMin("0.1")
    private double price;

    @Min(value = 1, message = "页数不能小于1页")
    private int pages;

    // 省略getter和setter方法
}

在JavaBean中我们添加了三个属性,分别是name、price和pages,这三个属性上均添加了JSR-303提供的注解用来描述这些属性的约束条件。

2.2 在Controller中调用校验框架并处理错误信息

示例2:

@Controller
@RequestMapping("/book")
public class BookController {
    @RequestMapping("/save")
    public String save(@Valid Book book, BindingResult result, Model model) {
        // 校验bean
        if (result.hasErrors()) {
            // 处理错误信息
            String errorInfo = getErrors(result);
            model.addAttribute("errorMsg", errorInfo);
            return "/error";
        }

        // do something
        // ...

        // 返回成功页面
        return "/success";
    }

    // 获取错误信息
    private String getErrors(BindingResult result) {
        List<FieldError> fieldErrors = result.getFieldErrors();
        StringBuffer errorInfo = new StringBuffer("");
        for (FieldError fieldError : fieldErrors) {
            errorInfo.append(fieldError.getDefaultMessage() + "<br>");
        }
        return errorInfo.toString();
    }
}

在Controller中,我们的save方法中有一个Book对象需要被校验,我们添加了@Valid注解用来启用校验框架,同时用BindingResult对象来存储错误信息。如果校验Book对象时发生了错误,则直接通过getErrors方法获取所有的错误信息,然后将错误信息放到Model中交给视图来渲染。

3. 总结

从上述两个简单的示例可以看出来,使用JSR-303进行校验非常方便,只需要在JavaBean的属性上添加对应的注解即可。在SpringMVC中我们只需要在Controller中加入@Valid注解并处理错误信息即可完成校验。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringMVC 使用JSR-303进行校验 @Valid示例 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • Bootstrap导航条可点击和鼠标悬停显示下拉菜单

    下面我将详细讲解如何使用Bootstrap实现导航条可点击和鼠标悬停显示下拉菜单。 准备工作 在使用Bootstrap实现导航条下拉菜单功能时,需要先引入Bootstrap的CSS和JS文件。这里我以Bootstrap 4为例,可以在HTML文件的头部加入以下代码: <link rel="stylesheet" href=&quot…

    css 2023年6月10日
    00
  • CSS利用pointer-events防止重复点击的方法实例

    下面我来为大家讲解一下“CSS利用pointer-events防止重复点击的方法实例”的完整攻略。 什么是pointer-events属性? pointer-events属性用于指定元素是否可以作为触发事件的目标。当元素的pointer-events属性设置为none时,该元素将不会响应任何事件(如鼠标事件、键盘事件等),并且该元素下的所有子元素也都不会响应…

    css 2023年6月11日
    00
  • 10分钟入门CSS3 Animation

    下面是针对“10分钟入门CSS3 Animation”的完整攻略: CSS3 Animation是什么 CSS3 Animation是CSS3中的一个模块,其主要作用是创建动态效果,使网页更加生动、活泼。通过CSS3 Animation,可以实现各种复杂的动画效果,如旋转、放大、缩小、褪色等。 CSS3 Animation的语法 CSS3 Animation…

    css 2023年6月9日
    00
  • CSS 曲线阴影实现的示例代码

    下面是“CSS 曲线阴影实现的示例代码”的完整攻略。 1. 理解CSS曲线阴影 CSS曲线阴影可以用来创建被各种形状的曲线所覆盖的阴影。通过CSS3的box-shadow属性可以实现,该属性有多个参数,其中最后一个参数可以用于设置阴影模糊的曲率。 例如,可以使用以下代码创建一个带有曲线阴影的矩形: .box { width: 200px; height: 1…

    css 2023年6月10日
    00
  • CSS中Position四个属性的使用介绍

    下面我将为你介绍CSS中Position四个属性的使用方法。 Position属性 Position属性是CSS中用于定位元素的属性。其可取值包括static、relative、absolute和fixed。 static Static是默认值,元素遵循正常文档流。 relative 使用Relative属性将元素相对于其正常位置进行定位。这是相对于元素原始…

    css 2023年6月9日
    00
  • CSS 实现蜂巢/六边形图集的示例代码

    下面是为实现蜂巢/六边形图集的示例代码的完整攻略: 前言 蜂巢/六边形图集是CSS中非常有趣的设计之一,它可以用于在网站中展示图片或图标。这种设计不仅美观,而且可以增加用户的交互性。本文将为大家介绍如何使用CSS实现蜂巢/六边形图集。 实现步骤 步骤1:创建HTML骨架 首先,我们需要创建一个HTML骨架,用于包含六边形图集。以下是一个示例HTML代码: &…

    css 2023年6月10日
    00
  • 浅析几个CSS3常用功能的写法

    浅析几个CSS3常用功能的写法 一、圆角边框(border-radius) border-radius属性用来设置元素的圆角。可以针对一个元素的四个角分别设置圆角半径,也可以设置整个元素的圆角半径。其语法如下: selector { border-radius: 参数1 参数2 参数3 参数4; } 其中,参数1-参数4表示四角的半径,如果只有一个参数,其值…

    css 2023年6月9日
    00
  • CSS关于相对定位和绝对定位的说明实例

    下面是关于CSS相对定位和绝对定位的详细攻略。 相对定位 相对定位是指元素的定位相对于其原本的位置,通过指定元素的相对定位属性,可以把元素在其原本位置上移动一定的距离。 相关CSS属性 相对定位需要使用以下CSS属性: position:相对定位需要设置为relative; top:定义从元素的顶端开始向下偏移的距离; bottom:定义从元素的底部开始向上…

    css 2023年6月9日
    00
合作推广
合作推广
分享本页
返回顶部