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

yizhihongxing

关于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日

相关文章

  • 纯CSS实现的大小渐变、渐远效果

    下面是详细讲解“纯CSS实现的大小渐变、渐远效果”的完整攻略。 纯CSS实现的大小渐变效果 步骤1:创建HTML结构 首先,我们需要先创建HTML结构用于展示效果。假设我们需要创建一个圆形的元素,并在元素中心放置一些内容。我们可以使用一个div元素,并设置它的宽度和高度相等,即可创建出一个圆形的元素,同时在div元素内部加入一些子元素,用于展示需要突出显示的…

    css 2023年6月9日
    00
  • CSS3教程:新增加的结构伪类

    让我详细讲解一下“CSS3教程:新增加的结构伪类”。 什么是结构伪类 结构伪类是一种CSS3新增加的选择器,用于选择在特定位置的元素。它基于元素在DOM结构中的位置来选择元素,因此被称为结构性伪类。 CSS3新增加的结构伪类 CSS3中新增加的结构伪类包括::nth-child, :nth-last-child, :nth-of-type, :nth-las…

    css 2023年6月9日
    00
  • 网页添加CSS样式表的四种方法

    当我们建立一个网站时,我们需要对页面的样式进行设计和美化,以提高用户对网站的感知度和用户体验。在这个过程中,我们可以通过添加CSS样式表对网站进行样式的统一设置与优化。 网页添加CSS样式表的四种方法: 1.内联式方式 在HTML标签中通过style属性来设置CSS样式,此方式直接作用于当前标签,使用简单,但会导致HTML代码冗长,且样式难以维护。 示例代码…

    css 2023年6月10日
    00
  • css 盒模型 文档流 几种清除浮动的方法实例详解

    CSS盒模型 CSS盒模型指的是用于设计和排版网页元素的基本框架,每个元素都是一个矩形盒子,其由四部分组成:内容(content)、填充(padding)、边框(border)、外边距(margin)。 其中,content + padding + border 就是元素的内部空间,而 padding + border + margin 则是元素的尺寸大小。…

    css 2023年6月10日
    00
  • Bootstrap基本样式学习笔记之按钮(4)

    下面我将对“Bootstrap基本样式学习笔记之按钮(4)”这篇文章进行详细讲解。 标题 “Bootstrap基本样式学习笔记之按钮(4)” 前言 在这篇文章中,作者主要讲解了Bootstrap按钮组件的使用方法。Bootstrap是一款前端开发框架,而按钮是网站开发中不可或缺的组件之一。因此,学习Bootstrap的按钮组件对于想要学习前端开发的人来说是非…

    css 2023年6月11日
    00
  • 25种提高网页加载速度的方法和技巧

    25种提高网页加载速度的方法和技巧 在当今互联网时代,拥有一个快速响应的网站是至关重要的。现在网络用户注重速度,如果您的网站加载速度过慢,可能会失去潜在用户。以下是25种提高网页加载速度的方法和技巧: 1. 压缩图片 图片是拖慢网页加载速度的主要因素之一。通过压缩图片文件可以减少文件大小,提高网页加载速度。 示例:使用ImageOptim,或Compress…

    css 2023年6月10日
    00
  • 学习使用Bootstrap输入框、导航、分页等常用组件

    学习使用Bootstrap组件是网页开发入门的必备技能之一。下面是学习使用Bootstrap输入框、导航、分页等常用组件的完整攻略。 步骤一:引入Bootstrap 在使用Bootstrap之前,首先需要在你的网页中引入Bootstrap库。可以通过以下代码引入Bootstrap: <link rel="stylesheet" hr…

    css 2023年6月11日
    00
  • JS组件福利大放送 推荐12款好用的Bootstrap组件

    下面是详细讲解“JS组件福利大放送 推荐12款好用的Bootstrap组件”的完整攻略: 1. 什么是JS组件? JS组件指的是使用JavaScript编写的可复用的代码模块,常用于构建Web应用程序的用户界面和交互功能。在Bootstrap中,包含了许多常用的JS组件,例如下拉菜单、模态框、轮播图等。 2. 为什么使用Bootstrap组件? Bootst…

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