Spring MVC注解验证实战:国际化与默认值处理
61 浏览量
更新于2024-09-02
收藏 87KB PDF 举报
"这篇文章除了介绍Spring MVC中基于注解的验证方法,还提供了一个包含多语言支持和默认值处理的示例。"
在Spring MVC框架中,注解验证是一种有效且方便的方式来验证视图模型(ViewModel)的数据。这种方法主要用于简单的数据验证,对于涉及复杂业务逻辑的验证可能不太适用。下面我们将详细探讨Spring MVC自带的注解验证以及如何自定义注解以实现更灵活的验证规则。
首先,为了启用注解验证,我们需要在`web.xml`中配置Spring的DispatcherServlet,并指定相应的Spring配置文件。在这个例子中,`dispatcher` servlet配置如下:
```xml
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value></param-value>
</init-param>
</servlet>
```
在Spring配置文件(例如`spring.xml`)中,我们需要引入数据 binder 和 验证相关的bean,这通常包括`LocalValidatorFactoryBean`,它实现了JSR-303/JSR-349的Bean Validation API:
```xml
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
```
接下来是注解的使用。Spring MVC提供了如`@NotNull`, `@Size`, `@Pattern`等注解来对字段进行基本的验证。例如,我们可以这样定义一个ViewModel:
```java
public class User {
@NotNull(message = "{username.notNull}")
private String username;
@Size(min = 6, max = 20, message = "{password.size}")
private String password;
@Email(message = "{email.invalid}")
private String email;
// getters and setters
}
```
在这里,我们使用了`@NotNull`来确保用户名不为空,`@Size`来限制密码的长度,以及`@Email`来验证邮箱格式。错误消息可以与国际化资源文件关联,以便支持多语言。
此外,为了处理空值或需要转换的数据类型,例如`int`或`date`,我们可以创建自定义注解。以电话号码验证为例,我们可以定义一个名为`@Tel`的注解:
```java
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = TelValidator.class)
public @interface Tel {
String message() default "{tel.invalid}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
```
然后编写对应的验证器类`TelValidator`:
```java
public class TelValidator implements ConstraintValidator<Tel, String> {
@Override
public void initialize(Tel constraintAnnotation) {}
@Override
public boolean isValid(String tel, ConstraintValidatorContext context) {
// 实现电话号码的验证逻辑
return Pattern.compile("\\d{11}").matcher(tel).matches();
}
}
```
通过这种方式,我们可以自定义验证逻辑,同时保持代码的整洁和模块化。当表单提交后,Spring MVC会自动执行这些验证,如果验证失败,它将返回错误信息,供前端展示。
总结,Spring MVC的注解验证机制使得在控制器层的验证变得简单,通过内置和自定义注解,我们可以轻松地处理常见和特定的验证需求。同时,结合国际化资源文件,可以提供多语言的支持,提升用户体验。
2019-08-07 上传
139 浏览量
2014-11-20 上传
2023-06-07 上传
2024-10-26 上传
2024-09-14 上传
2024-10-30 上传
2024-10-26 上传
2023-05-25 上传
weixin_38708223
- 粉丝: 5
- 资源: 915
最新资源
- 基于Python和Opencv的车牌识别系统实现
- 我的代码小部件库:统计、MySQL操作与树结构功能
- React初学者入门指南:快速构建并部署你的第一个应用
- Oddish:夜潜CSGO皮肤,智能爬虫技术解析
- 利用REST HaProxy实现haproxy.cfg配置的HTTP接口化
- LeetCode用例构造实践:CMake和GoogleTest的应用
- 快速搭建vulhub靶场:简化docker-compose与vulhub-master下载
- 天秤座术语表:glossariolibras项目安装与使用指南
- 从Vercel到Firebase的全栈Amazon克隆项目指南
- ANU PK大楼Studio 1的3D声效和Ambisonic技术体验
- C#实现的鼠标事件功能演示
- 掌握DP-10:LeetCode超级掉蛋与爆破气球
- C与SDL开发的游戏如何编译至WebAssembly平台
- CastorDOC开源应用程序:文档管理功能与Alfresco集成
- LeetCode用例构造与计算机科学基础:数据结构与设计模式
- 通过travis-nightly-builder实现自动化API与Rake任务构建