spring mvc使用注解后,依然可以使用自带的Validator接口。比如这样一个Validator实现:
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->@Component("productValidator")
public class ProductValidator implements Validator {
@SuppressWarnings("unchecked")
@Override
public boolean supports(Class clazz) {
return Product.class.isAssignableFrom(clazz);
}
@Override
public void validate(Object object, Errors errors) {
ValidationUtils.rejectIfEmpty(errors, "name","field.required");
}
在Controller中通过注解获取:
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
--> @Resource(name = "productValidator")
private Validator validator;
...
@RequestMapping("/save.htm")
public ModelAndView save(Product product, BindingResult result) {
this.validator.validate(product, result);
if (result.hasErrors()) {
return new ModelAndView("input");
}
...
如果是绑定相关的,比如只是检查不能为空,可以用下面方式替代,在Controller中增加:
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
--> @InitBinder
public void initDataBinding(WebDataBinder binder) {
binder.setRequiredFields(new String[] { "name" });
}
在错误信息的属性文件中增加:
required={0}不能为空
product.name=名称
上述两种方式使用共同的属性文件配置方法,在spring的配置文件中:
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
--> <bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<list>
<value>errors</value>
</list>
</property>
</bean>
在jsp页面中通过spring的form标签显示:
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
--><%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
......
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
......
另外,如果InitBinder注解不加参数,将检查所有控制器方法调用的入参,可能有些类型入参不需要检查,这时可以:
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->@InitBinder("product")
public void initDataBinding(WebDataBinder binder) {
binder.setRequiredFields(new String[] { "name" });
}
分享到:
相关推荐
Spring MVC 是一个广泛使用的Java Web框架,用于构建可维护、模块化且松散耦合的Web应用程序...通过深入理解Spring MVC的工作原理,结合上述实践策略,开发者能够有效地避免和解决参数绑定漏洞,提升Web应用的安全性。
Spring MVC还支持数据绑定,自动将请求参数绑定到Java对象,这极大地简化了表单提交的处理。对于验证,Spring MVC提供了BindingResult和Validator接口,用于校验模型数据的正确性。 另外,Spring MVC与Spring框架的...
6. **数据绑定与验证**:Spring MVC提供了数据绑定和验证功能,允许将表单数据自动绑定到Java对象,并进行校验,简化了业务逻辑处理。 7. **视图解析**:Spring MVC 4.0支持多种视图技术,如JSP、FreeMarker、...
《Spring MVC 3.0实战指南》,参考《Spring 3.x企业应用开发实战》。 内容简介: 1、Spring MVC框架简介 2、HTTP请求地址映射 3、HTTP请求数据的绑定 4、数据转换、格式化、校验 5、数据模型控制 6、视图及...
Spring MVC通过分离关注点,将业务逻辑、数据处理和用户界面解耦。Controller接收HTTP请求,调用Service层处理业务,Service层与DAO层交互操作数据,最后Controller将处理结果传递给View进行渲染展示。 2. **配置...
Spring MVC 是 Spring 框架的一个模块,主要负责处理 Web 应用中的请求和响应。在 Spring 3.3.2 版本中,它引入了丰富的注解,使得开发者可以更加简洁、高效地实现 MVC 架构。下面将详细阐述 Spring MVC 的注解实现...
8. **Interceptors**: 拦截器是Spring MVC中的一个高级特性,可以对请求进行预处理和后处理,比如登录检查、性能监控等。 9. **HandlerAdapter**: 处理器适配器负责调用控制器的方法,Spring MVC 内置了多种适配器...
在Spring MVC中,开发者可以利用模型-视图-控制器(MVC)架构模式来分离业务逻辑、数据处理和用户界面。下面我们将深入探讨Spring MVC的基础知识。 1. **核心组件**: - DispatcherServlet:作为Spring MVC的前端...
9. **拦截器**:Interceptor是Spring MVC中的一个关键组件,它可以拦截请求,执行预处理和后处理操作,例如登录检查、性能监控等。 10. **RESTful支持**:Spring MVC允许开发者轻松创建RESTful Web服务,支持JSON、...
1. **MVC架构模式**:Spring MVC 提供了一个清晰的分层架构,使得开发者可以独立地处理应用程序的业务逻辑、数据访问和用户界面。模型层负责业务逻辑,视图层负责呈现数据,控制器层则协调这两个部分,处理用户的...
对于理解和使用Spring MVC进行Web开发的开发者来说,这是一份非常有价值的参考资料。通过深入学习并实践文档中的内容,可以提升开发者在Spring MVC上的专业技能,从而更好地应对复杂的Web开发挑战。
11. **验证**:Spring MVC 集成了 Bean Validation API,允许开发者对模型数据进行校验,通过 @Valid 注解和 ConstraintValidator 实现自定义验证规则。 12. **消息转换**:Spring MVC 提供了 HttpMessageConverter...
在实际应用中,Spring MVC支持多种数据绑定和验证机制,如使用@Valid进行数据校验,@ModelAttribute将请求参数绑定到模型对象。它还提供了异常处理机制,通过@ControllerAdvice和@ExceptionHandler可以全局处理异常...
首先,Spring MVC 5.0引入了许多改进和新特性,例如对Java 8的全面支持、更好的类型安全的模型绑定、增强的路径变量处理和错误处理机制。Resin 4.0.61版本能够很好地与这些高级特性兼容,这意味着开发者可以利用...
书中内容从Spring框架的基础知识讲起,逐步深入到Spring MVC的各个特性,包括如何使用注解和XML配置来开发MVC应用程序,如何处理数据绑定和验证,以及如何利用转换器和格式化器来优化数据处理。通过本书的学习,读者...
10. **验证**:Spring MVC 结合 `Hibernate Validator` 提供了表单验证功能,可以使用 `@Valid` 和 `BindingResult` 进行校验。 11. **RESTful 风格**:通过 `@RestController` 注解和 HTTP 方法注解(`@GetMapping...
6. **数据绑定与验证**:Spring MVC提供了强大的数据绑定和验证功能,通过`@ModelAttribute`注解可以将请求参数绑定到方法参数上,`@Valid`可以进行数据校验。 7. **拦截器(Interceptor)**:拦截器允许在请求处理...
这确保了Spring能够识别和处理使用注解的方法。在示例2的`web.xml`中,`<context-param>`用于设置应用的根目录,而`<servlet>`和`<servlet-mapping>`定义了`DispatcherServlet`及其映射。 综上所述,Spring 3.0 MVC...
2. 模型绑定:Spring MVC支持注解驱动的数据绑定,例如@ModelAttribute、@RequestParam、@PathVariable等,这些注解使得我们可以方便地将请求参数映射到方法参数,极大地简化了数据处理。 3. 数据验证:Spring MVC...