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文件中指定的内容
分类:
springBoot
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
2015-12-14 【原生态】Http请求数据 与 发送数据