首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

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

2012-09-04 
spring mvc使用注解后的校验和绑定处理spring mvc使用注解后,依然可以使用自带的Validator接口。比如这样一

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" });}

热点排行