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日

相关文章

  • webpack 5.68.0版本教程示例详解

    webpack 5.68.0版本教程示例详解 什么是 webpack? Webpack 是一个模块化打包工具,它主要用于将应用程序所需的各种文件(例如 HTML、CSS、JavaScript、图片等)打包成一个或多个静态资源,以便于部署和运行。 Webpack 基础 Webpack 能够将项目中的模块(Module)打包成一个或多个 bundle,适用于各种…

    css 2023年6月9日
    00
  • CSS3之transition实现下划线的示例代码

    下面是“CSS3之transition实现下划线的示例代码”的详细攻略: 一、什么是transition transition是CSS3中的一个属性,可以用来设置CSS的过渡效果。它可以在元素的属性发生变化时,平滑地过渡到新的状态。常见的应用包括鼠标悬停时,改变文字和背景色等。 二、transition实现下划线代码 下面是一个使用transition实现下…

    css 2023年6月13日
    00
  • css层滚动条

    1. 什么是CSS层滚动条? CSS层滚动条是CSS3新增的一种基于webkit内核的样式属性,网页开发者可以通过CSS样式来自定义滚动条的样式、宽度、颜色等,滚动条简单易用受到很多开发者的喜欢和青睐。 2. CSS层滚动条属性 CSS层滚动条主要涉及到以下三个属性: ::-webkit-scrollbar: 滚动条容器; ::-webkit-scrollb…

    css 2023年6月10日
    00
  • CSS的未来:一些试验性非主流隐藏在浏览器中的CSS属性

    CSS的未来可能不仅仅是我们已知的那些常规CSS属性,并且存在了一些试验性非主流CSS属性,这些属性可以在现代浏览器中进行实验和使用。在本篇攻略中,我们将讲解一些比较有趣的试验性非主流CSS属性,并提供一些示例。 1. clip-path clip-path是一个用于剪辑元素的CSS属性,它可以用于剪辑图片或其他图形,以及用于实现很炫酷的动画效果。clip-…

    css 2023年6月9日
    00
  • 哔哩哔哩视频出现绿屏/红屏/黑屏怎么办?b站视频绿屏现象的解决办法介绍

    下面我为大家详细讲解一下“哔哩哔哩视频出现绿屏/红屏/黑屏怎么办?”的完整攻略。 1. 问题描述 当我们在B站上观看视频时,有时候会出现绿屏、红屏、黑屏等现象,影响我们的观看体验,该怎么办呢? 2. 解决办法 2.1 清除缓存和Cookie 第一种解决办法是清除浏览器缓存和Cookie。这是因为有时候浏览器缓存文件、Cookie等可能会导致视频出现绿屏、红屏…

    css 2023年6月9日
    00
  • css 行级元素在多浏览器下的宽度问题 与解决方法

    CSS行级元素在多浏览器下的宽度问题是一个常见的问题,它常常被忽视,导致在不同浏览器下显示的宽度不一致。然而,解决这个问题并不难,我们可以采用以下方法来解决: 问题描述 CSS中的行级元素,例如 <a>, <span>, <em> 等,默认情况下只占据它们所包含文本内容的宽度,也就是说,它们的宽度由它们的内容决定。这个特性…

    css 2023年6月10日
    00
  • 鼠标拖动改变DIV等网页元素的大小的实现方法

    实现网页元素拖动改变大小通常需要用到HTML、CSS和JavaScript技术。以下是一些实现方法的说明: 使用CSS3 resize属性 CSS3中的resize属性可以用于定义元素是否允许调整大小。将此属性应用于一个div元素,使其可以被拖动调整大小。但是需要注意的是,该方法仅可使用于某些浏览器(如Chrome、Firefox、Safari等),因为在一…

    css 2023年6月11日
    00
  • 详解CSS选择符之子代选择符

    我们来详细讲解一下CSS的子代选择符。 子代选择符 子代选择符是CSS中的一种选择符,可以选择指定元素的所有子元素。子元素是指直接嵌套在父元素内的元素,孙子元素不算。 使用子代选择符的方法是在父元素的选择器后面加上一个空格,然后再加上子元素选择器。例如,想要选择<div>元素内所有的<span>元素,可以使用如下的子代选择符: div…

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