ItGo.me - 专注IT技术分享

首页 > Spring > Spring MVC > springMVC自定义属性编辑器

springMVC自定义属性编辑器

时间:2016-02-21来源:网友分享 点击:

自定义springMVC的属性编辑器主要有两种方式,一种是使用@InitBinder标签在运行期注册一个属性编辑器,这种编辑器只在当前Controller里面有效;还有一种是实现自己的 WebBindingInitializer,然后定义一个 AnnotationMethodHandlerAdapter的bean,在此bean里面进行注册 ,这种属性编辑器是全局的。

 

第一种方式:

import java.beans.PropertyEditorSupport;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date;import javax.servlet.http.HttpServletResponse;import org.springframework.beans.propertyeditors.CustomDateEditor;import org.springframework.stereotype.Controller;import org.springframework.web.bind.WebDataBinder;import org.springframework.web.bind.annotation.InitBinder;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;@Controllerpublic class GlobalController {@RequestMapping("test/{date}")public void test(@PathVariable Date date, HttpServletResponse response) throws IOExceptionresponse.getWriter().write( date);}@InitBinder//必须有一个参数WebDataBinderpublic void initBinder(WebDataBinder binder) {binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), false));                binder.registerCustomEditor(int.class, new PropertyEditorSupport() {@Overridepublic String getAsText() {// TODO Auto-generated method stubreturn getValue().toString();}@Overridepublic void setAsText(String text) throws IllegalArgumentException {// TODO Auto-generated method stubSystem.out.println(text + "...........................................");setValue(Integer.parseInt(text));}});}}

  这种方式这样写了就可以了

 

 

 

第二种:

 

1.定义自己的WebBindingInitializer

 

package com.xxx.blog.util;import java.util.Date;import java.text.SimpleDateFormat;import org.springframework.beans.propertyeditors.CustomDateEditor;import org.springframework.web.bind.WebDataBinder;import org.springframework.web.bind.support.WebBindingInitializer;import org.springframework.web.context.request.WebRequest;public class MyWebBindingInitializer implements WebBindingInitializer {@Overridepublic void initBinder(WebDataBinder binder, WebRequest request) {// TODO Auto-generated method stubbinder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), false));}}

 

2.在springMVC的配置文件里面定义一个AnnotationMethodHandlerAdapter,并设置其WebBindingInitializer属性为我们自己定义的WebBindingInitializer对象

 

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"><property name="cacheSeconds" value="0"/><property name="webBindingInitializer"><bean class="com.xxx.blog.util.MyWebBindingInitializer"/></property></bean>

 第二种方式经过上面两步就可以定义一个全局的属性编辑器了。

注意:当使用了<mvc:annotation-driven />的时候,它 会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean。这时候第二种方式指定的全局属性编辑器就不会起作用了,解决办法就是手动的添加上述bean,并把它们加在<mvc:annotation-driven/>的前面。如果不生效,则将手动注册AnnotationMethodHandlerAdapter改为手动注册RequestMappingHandlerAdapter。


SpringMVC Controller介绍

  SpringMVC Controller 介绍 一、简介          在 SpringMVC 中,控制器 Controller 负责处理由 DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个 Model ,然后再把该...

Spring整合Hessian访问远程服务

Spring 整合 Hessian 访问远程服务 目录 1.1       Hessian 简介 1.2       整合 1.2.1      概述 1.2.2      服务端整合 1.2.3      客户端整合 1.1      Hessian 简介        Hessian 是一个轻量级的...

SpringMVC介绍之约定优于配置

SpringMVC 介绍之约定优于配置      所谓的约定优于配置就是指在程序开发过程中我们约定好一些规则可以使我们更少的进行配置和代码编写。就这么简单的一句话可能你还不是很懂什么是约定...

自定义springMVC的属性编辑器主要有两种方式,一种是使用@InitBinder标签在运行期注册一个属性编辑器,这种编辑器只在当前Controller里面有效;还有一种是实现自己的 WebBindingInitializer,然后定义
------分隔线----------------------------
推荐文章