`

spring mvc使用注解后的校验和绑定处理

阅读更多

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 参数绑定漏洞

    Spring MVC 是一个广泛使用的Java Web框架,用于构建可维护、模块化且松散耦合的Web应用程序...通过深入理解Spring MVC的工作原理,结合上述实践策略,开发者能够有效地避免和解决参数绑定漏洞,提升Web应用的安全性。

    最全最经典spring-mvc教程

    Spring MVC还支持数据绑定,自动将请求参数绑定到Java对象,这极大地简化了表单提交的处理。对于验证,Spring MVC提供了BindingResult和Validator接口,用于校验模型数据的正确性。 另外,Spring MVC与Spring框架的...

    spring mvc 4.0

    6. **数据绑定与验证**:Spring MVC提供了数据绑定和验证功能,允许将表单数据自动绑定到Java对象,并进行校验,简化了业务逻辑处理。 7. **视图解析**:Spring MVC 4.0支持多种视图技术,如JSP、FreeMarker、...

    Spring3MVC注解教程.ppt

    《Spring MVC 3.0实战指南》,参考《Spring 3.x企业应用开发实战》。 内容简介: 1、Spring MVC框架简介 2、HTTP请求地址映射 3、HTTP请求数据的绑定 4、数据转换、格式化、校验 5、数据模型控制 6、视图及...

    spring MVC_快速入门

    Spring MVC通过分离关注点,将业务逻辑、数据处理和用户界面解耦。Controller接收HTTP请求,调用Service层处理业务,Service层与DAO层交互操作数据,最后Controller将处理结果传递给View进行渲染展示。 2. **配置...

    spring3.3.2 mvc 注解实现

    Spring MVC 是 Spring 框架的一个模块,主要负责处理 Web 应用中的请求和响应。在 Spring 3.3.2 版本中,它引入了丰富的注解,使得开发者可以更加简洁、高效地实现 MVC 架构。下面将详细阐述 Spring MVC 的注解实现...

    spring mvc

    8. **Interceptors**: 拦截器是Spring MVC中的一个高级特性,可以对请求进行预处理和后处理,比如登录检查、性能监控等。 9. **HandlerAdapter**: 处理器适配器负责调用控制器的方法,Spring MVC 内置了多种适配器...

    spring MVC基础学习

    在Spring MVC中,开发者可以利用模型-视图-控制器(MVC)架构模式来分离业务逻辑、数据处理和用户界面。下面我们将深入探讨Spring MVC的基础知识。 1. **核心组件**: - DispatcherServlet:作为Spring MVC的前端...

    精通Spring MVC4 电子版_springmuv_

    9. **拦截器**:Interceptor是Spring MVC中的一个关键组件,它可以拦截请求,执行预处理和后处理操作,例如登录检查、性能监控等。 10. **RESTful支持**:Spring MVC允许开发者轻松创建RESTful Web服务,支持JSON、...

    Spring MVC学习框架

    1. **MVC架构模式**:Spring MVC 提供了一个清晰的分层架构,使得开发者可以独立地处理应用程序的业务逻辑、数据访问和用户界面。模型层负责业务逻辑,视图层负责呈现数据,控制器层则协调这两个部分,处理用户的...

    spring MVC文档

    对于理解和使用Spring MVC进行Web开发的开发者来说,这是一份非常有价值的参考资料。通过深入学习并实践文档中的内容,可以提升开发者在Spring MVC上的专业技能,从而更好地应对复杂的Web开发挑战。

    spring-mvc-官方中文文档

    11. **验证**:Spring MVC 集成了 Bean Validation API,允许开发者对模型数据进行校验,通过 @Valid 注解和 ConstraintValidator 实现自定义验证规则。 12. **消息转换**:Spring MVC 提供了 HttpMessageConverter...

    spring_mvc.zip_spring_spring mvc_springmvc_springmvc架构

    在实际应用中,Spring MVC支持多种数据绑定和验证机制,如使用@Valid进行数据校验,@ModelAttribute将请求参数绑定到模型对象。它还提供了异常处理机制,通过@ControllerAdvice和@ExceptionHandler可以全局处理异常...

    resin 支持spring mvc 5.0以上版本 支持Hibernate validation

    首先,Spring MVC 5.0引入了许多改进和新特性,例如对Java 8的全面支持、更好的类型安全的模型绑定、增强的路径变量处理和错误处理机制。Resin 4.0.61版本能够很好地与这些高级特性兼容,这意味着开发者可以利用...

    Spring MVC A Tutorial Second Edition

    书中内容从Spring框架的基础知识讲起,逐步深入到Spring MVC的各个特性,包括如何使用注解和XML配置来开发MVC应用程序,如何处理数据绑定和验证,以及如何利用转换器和格式化器来优化数据处理。通过本书的学习,读者...

    spring mvc项目后端源码

    10. **验证**:Spring MVC 结合 `Hibernate Validator` 提供了表单验证功能,可以使用 `@Valid` 和 `BindingResult` 进行校验。 11. **RESTful 风格**:通过 `@RestController` 注解和 HTTP 方法注解(`@GetMapping...

    spring mvc测试样例,使用spring4.1开发

    6. **数据绑定与验证**:Spring MVC提供了强大的数据绑定和验证功能,通过`@ModelAttribute`注解可以将请求参数绑定到方法参数上,`@Valid`可以进行数据校验。 7. **拦截器(Interceptor)**:拦截器允许在请求处理...

    spring3.0MVC注解(附实例).docx

    这确保了Spring能够识别和处理使用注解的方法。在示例2的`web.xml`中,`&lt;context-param&gt;`用于设置应用的根目录,而`&lt;servlet&gt;`和`&lt;servlet-mapping&gt;`定义了`DispatcherServlet`及其映射。 综上所述,Spring 3.0 MVC...

    看透Spring MVC源代码分析与实践

    2. 模型绑定:Spring MVC支持注解驱动的数据绑定,例如@ModelAttribute、@RequestParam、@PathVariable等,这些注解使得我们可以方便地将请求参数映射到方法参数,极大地简化了数据处理。 3. 数据验证:Spring MVC...

Global site tag (gtag.js) - Google Analytics