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日

相关文章

  • jquery图片切换实例分析

    jQuery 图片切换实例分析 概述 jQuery 是一个跨浏览器兼容的 JavaScript 库,因其兼容性良好、使用方便,被广泛应用于前端开发中。本文将介绍 jQuery 的图片切换实例,包括切换的原理、具体实现方法以及两个简单的示例说明。 原理 图片切换的原理是通过改变图片的 src 属性来达到切换效果。我们首先编写 HTML 代码,用<img&…

    css 2023年6月11日
    00
  • jQuery中事件与动画的总结分享

    来为大家详细讲解“jQuery中事件与动画的总结分享”的完整攻略。 前言 在前端开发中,常常需要使用到 jQuery 来制作动态交互效果。而 jQuery 中的事件与动画则是制作动态交互效果的重要组成部分。因此,了解 jQuery 中事件与动画的基本用法及其应用场景就显得尤为重要了。 事件 绑定事件 我们可以使用 jQuery 的 on() 方法来为 HTM…

    css 2023年6月9日
    00
  • CSS实现镂空遮罩效果

    以下是“CSS实现镂空遮罩效果”的完整攻略。 镂空遮罩效果介绍 镂空遮罩效果是一种常见的UI设计效果,它可以通过遮罩层将页面的某一部分内容隐藏起来,同时显示出底部的内容,并在遮罩层上通过一定的形状绘制出一些空洞或者图案,使得底部内容可见。 实现过程 在实现镂空遮罩效果之前,首先需要明确的是,该效果必须在背景上实现。也就是说,我们需要为网页设置一张背景图,并且…

    css 2023年6月9日
    00
  • div+css设置div的背景为半透明的方法

    Div 是文档中常用的一个标签元素,可以用来表示文档的一部分,这里将详细讲解如何使用 CSS 给 div 元素设置背景色半透明的方法。 使用 CSS 设置背景色半透明的方法 设置 div 元素不透明的一种方法是使用 RGBA 颜色值,RGBA 是一种带透明度的颜色格式,其中 R、G、B 表示颜色的 RGB 值,A 表示透明度,范围从 0(完全透明)到 1(完…

    css 2023年6月9日
    00
  • 浅谈CSS3 动画卡顿解决方案

    下面我来为您详细讲解“浅谈CSS3 动画卡顿解决方案”的完整攻略。 1. 问题描述 CSS3 动画是前端常用的一种动画方式,但在一些低性能的设备上,动画可能会出现卡顿或卡顿不流畅的问题,影响用户体验。 2. 解决方案 2.1 使用 transform 属性 在 CSS3 动画中,使用 transform 属性可以有效提升动画性能。具体方式为: 尽可能使用 t…

    css 2023年6月10日
    00
  • 微信公众号支付H5调用支付解析

    当网站开发者需要实现微信公众号的在线支付功能时,可能会使用微信公众号支付进行处理。本文将介绍如何在网站中调用微信公众号支付H5。 准备工作 在开始前,需要先完成以下准备工作: 在微信商户平台注册一个商户号,并通过相应的审核流程。 在公众号后台配置JSAPI支付的安全域名。 H5调用支付 本节将介绍如何使用微信公众号支付H5进行在线支付。 第一步:引入JS文件…

    css 2023年6月10日
    00
  • 使用CSS3来匹配横屏竖屏的简单方法

    当我们编写响应式设计时,需要应对不同屏幕方向的变化。使用CSS3来匹配横屏和竖屏是一种简单方法,下面是详细的攻略: 使用CSS3媒体查询 CSS3媒体查询是一种可以检测设备屏幕尺寸、方向等特性的CSS技术。我们可以借此来调整我们的CSS样式。 1. 根据页面方向调整CSS 使用以下代码检测屏幕方向: @media screen and (orientatio…

    css 2023年6月10日
    00
  • js检测标题与描述中的关键词发现就替换或跳转到别的页面

    实现“js检测标题与描述中的关键词发现就替换或跳转到别的页面”,需要以下步骤: 在页面中添加一个用于承载脚本的script标签,并编写脚本。 <script> //这里是你的代码 </script> 定义需要匹配的关键词列表。 var keywords = [‘关键词1’, ‘关键词2’, ‘关键词3’]; 获取页面中的title元素…

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