专栏首页后台及大数据开发springBoot系列教程06:参数验证及验证信息国际化

springBoot系列教程06:参数验证及验证信息国际化

在springboot应用中要验证参数是否正确很简单,web应用已经包含了validation的

1.定义需要被验证的参数实体,并用注解标明错误类别和错误信息

package com.xiao.domain;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

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

/**
 * @since 2017年12月7日 下午2:17:42
 * @author 肖昌伟 317409898@qq.com
 * @description
 */
public class User implements Serializable {
    private static final long serialVersionUID = 4167869185651158701L;

    private Long id;
    @NotEmpty(message="{error.name}")
    private String name;
    @NotEmpty(message="密码不能为空")
    private String pwd;
    private String salt;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date birthDay = new Date();

    private List<Photo> pics = new ArrayList<Photo>();

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public String getSalt() {
        return salt;
    }

    public void setSalt(String salt) {
        this.salt = salt;
    }

    public Date getBirthDay() {
        return birthDay;
    }

    public void setBirthDay(Date birthDay) {
        this.birthDay = birthDay;
    }

    public List<Photo> getPics() {
        return pics;
    }

    public void setPics(List<Photo> pics) {
        this.pics = pics;
    }

}

有两种方式指定错误信息

a:直接在messeage里面指定信息,但是这不利于国际化或者提示信息的变动

b:在错误消息里面执行,便于管理及国际化

如上,error.name即需要在配置文件中指定

默认的文件为ValidationMessages.properties 

在controller中使用如下:

@RequestMapping(value = "/json/test")
    public Result jsonTest(@Valid User user) {
        System.out.println(JSON.toJSONString(user));
        return new Result(user);
    }

注意 必须加上@Valid 注解,否则不生效

测试效果如下:

具体的错误信息展示可以根据需要进行格式输出,但是,错误的内容就是message里面或者properties文件中指定的内容

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java开发中的23种设计模式详解(转)

                                      ——可复用面向对象软件的基础

    肖哥哥
  • API接口设计:防参数篡改+防二次请求

    API接口由于需要供第三方服务调用,所以必须暴露到外网,并提供了具体请求地址和请求参数

    肖哥哥
  • 【高并发】秒杀系统高并发请求排队处理

    今天无意中看见了这位兄弟的文章 通过请求队列的方式来缓解高并发抢购(初探)  但文章最后说并发超过500 就会出现超发,看了下代码,的确有这个问题

    肖哥哥
  • [享学Feign] 三、原生Feign的核心API详解(一):UriTemplate、HardCodedTarget...

    代码下载地址:https://github.com/f641385712/feign-learning

    YourBatman
  • 内部类, 静态内部类, 局部类, 匿名内部类的解析和区别

    众所周知,外部顶级类的类名需和类文件名相同,只能使用public和default。而内部类是指在外部类的内部再定义一个类,类名不需要和文件名相同。内部类可以是静...

    挨踢小子部落阁
  • 快速学习-JPA中的一对多

    在一对多关系中,我们习惯把一的一方称之为主表,把多的一方称之为从表。在数据库中建立一对多的关系,需要使用数据库的外键约束。

    cwl_java
  • java 利用JAX-RS快速开发RESTful 服务

    JAX-RS(Java API for RESTful Web Services)同样也是JSR的一部分,详细规范定义见 https://jcp.org/en/...

    菩提树下的杨过
  • springboot解决静态属性注入问题

    可以看到,当DSHWechatApiUtil工具类组件进行初始化时,调用@PostConstruct注解标注的方法,对静态变量进行了赋值。

    吟风者
  • 【基础】通过反射访问private成员和方法,private设计的

    注意代码中的通过dm.setAccessible(true)这样在调用方法时他不会检查方法的修饰是public还是private。如果没有dm.setAcces...

    用户5640963
  • 简单介绍ASM核心API

    它的调用顺序是首先调用 visit,然后是对 visitSource 的最多一个调用,接下来是对 visitOuterClass 的最多一个调用,然后是可按任意...

    提莫队长

扫码关注云+社区

领取腾讯云代金券