Spring MVC注解验证实战:国际化与默认值处理
121 浏览量
更新于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 浏览量
2015-05-21 上传
2022-09-19 上传
2014-08-29 上传
2014-11-20 上传
2019-03-23 上传
2018-11-14 上传
2013-11-15 上传
weixin_38708223
- 粉丝: 5
- 资源: 915
最新资源
- 基于KNN算法的婚恋推荐算法研究.zip
- Animate.css-Tutorial:Animate.css教程的文件
- android应用源码动画文字自由移动-IT计算机-毕业设计.zip
- roadtrip-node:使用 node 和 mongo-db 的 roadtrip 应用程序
- TemplatesNetCore:我用于快速构建应用程序的代码模板,这些模板具有我在项目中通常使用的实践,特性和库
- WeatherWebApiSample
- mrobinson93.github.io:网站
- 数据库设计project——物业集团管理系统.zip
- Enterprise_Application_Solution:免费资料和样品
- porgy:Protoc插件
- V5:分层排队网络求解器
- dltmatlab代码-event-driven-IP:用于尖峰神经网络的事件驱动的内在可塑性(IP)学习规则
- MMath-Code:机器学习和微分方程
- testDBJenkins
- LunarCalendar:一个基于 Electron + React + Material Design 的工具栏日历,适用于 Mac、Windows 和 Linux
- dltmatlab代码-3D-DIC:3D-DIC