`
234390216
  • 浏览: 10192147 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
A5ee55b9-a463-3d09-9c78-0c0cf33198cd
Oracle基础
浏览量:460734
Ad26f909-6440-35a9-b4e9-9aea825bd38e
springMVC介绍
浏览量:1771658
Ce363057-ae4d-3ee1-bb46-e7b51a722a4b
Mybatis简介
浏览量:1395324
Bdeb91ad-cf8a-3fe9-942a-3710073b4000
Spring整合JMS
浏览量:393854
5cbbde67-7cd5-313c-95c2-4185389601e7
Ehcache简介
浏览量:678180
Cc1c0708-ccc2-3d20-ba47-d40e04440682
Cas简介
浏览量:529236
51592fc3-854c-34f4-9eff-cb82d993ab3a
Spring Securi...
浏览量:1178634
23e1c30e-ef8c-3702-aa3c-e83277ffca91
Spring基础知识
浏览量:461646
4af1c81c-eb9d-365f-b759-07685a32156e
Spring Aop介绍
浏览量:150077
2f926891-9e7a-3ce2-a074-3acb2aaf2584
JAXB简介
浏览量:66795
社区版块
存档分类
最新评论

springMVC自定义属性编辑器

阅读更多

自定义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;

@Controller
public class GlobalController {

	
	@RequestMapping("test/{date}")
	public void test(@PathVariable Date date, HttpServletResponse response) throws IOException
		response.getWriter().write( date);

	}
	
	@InitBinder//必须有一个参数WebDataBinder
	public void initBinder(WebDataBinder binder) {
		binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), false));

                binder.registerCustomEditor(int.class, new PropertyEditorSupport() {

			@Override
			public String getAsText() {
				// TODO Auto-generated method stub
				return getValue().toString();
			}

			@Override
			public void setAsText(String text) throws IllegalArgumentException {
				// TODO Auto-generated method stub
				System.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 {

	@Override
	public void initBinder(WebDataBinder binder, WebRequest request) {
		// TODO Auto-generated method stub
		binder.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。

7
0
分享到:
评论
6 楼 di1984HIT 2014-10-30  
写的很好~~
5 楼 wpf5788 2013-01-27  
少年  你们俩把东西都贴出来  大家都学习学习
4 楼 234390216 2013-01-06  
wlxlz 写道
楼主邮件你了

我没有收到你的邮件。
3 楼 wlxlz 2013-01-06  
楼主邮件你了
2 楼 234390216 2013-01-06  
wlxlz 写道
引用

注意:当使用了<mvc:annotation-driven />的时候,它 会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean。这时候第二种方式指定的全局属性编辑器就不会起作用了,解决办法就是手动的添加上述bean。

请问怎么手动添加啊?
我的配置文件是这样的:
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">  
   		<property name="webBindingInitializer" >  
       		<bean class = "com.test.spring.controller.databinder.MyWebBindingInitializer"/>  
   		</property >  
	</bean>

	<context:component-scan base-package="com.test.spring.controller">
		<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
	</context:component-scan>
	
	<mvc:annotation-driven />

这样是没有问题的,属性编辑器只有在有对象需要进行转换的时候才会调用的。要是还有问题的话,你再多贴点文件给我看看,比如你自己的WebBindingInitializer和调用的Controller。也可以给我发邮件contactandy.126.com,晚上下班后有空可以回复你。
1 楼 wlxlz 2013-01-05  
引用

注意:当使用了<mvc:annotation-driven />的时候,它 会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean。这时候第二种方式指定的全局属性编辑器就不会起作用了,解决办法就是手动的添加上述bean。

请问怎么手动添加啊?
我的配置文件是这样的:
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">  
   		<property name="webBindingInitializer" >  
       		<bean class = "com.test.spring.controller.databinder.MyWebBindingInitializer"/>  
   		</property >  
	</bean>

	<context:component-scan base-package="com.test.spring.controller">
		<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
	</context:component-scan>
	
	<mvc:annotation-driven />

相关推荐

    springmvc自定义属性编辑器和参数解析器

    springmvc自定义属性编辑器和参数解析器

    SpringMVC自定义属性编辑器详解及实例

    SpringMVC自定义属性编辑器详解及实例 自定义springMVC的属性编辑器主要有两种方式,一种是使用@InitBinder标签在运行期注册一个属性编辑器,这种编辑器只在当前Controller里面有效;还有一种是实现自己的 ...

    Thymeleaf中文参考手册_3.0.5版

    Thymeleaf 是一个跟 Velocity、FreeMarker 类似的... Thymeleaf 提供spring标准方言和一个与 SpringMVC 完美集成的可选模块,可以快速的实现表单绑定、属性编辑器、国际化等功能。 这是3.0.5版中文参考手册,很好用。

    thymeleaf_3.0.5_中文参考手册

    简单说, Thymeleaf 是一个跟 Velocity、FreeMarker 类似的模板引擎,它可以完全替代 ... Thymeleaf 提供spring标准方言和一个与 SpringMVC 完美集成的可选模块,可以快速的实现表单绑定、属性编辑器、国际化等功能。

    thymeleaf_中文参考手册

    简单说, Thymeleaf 是一个跟 Velocity、FreeMarker 类似的模板引擎,它可以完全替代 ...3.Thymeleaf 提供spring标准方言和一个与 SpringMVC 完美集成的可选模块,可以快速的实现表单绑定、属性编辑器、国际化等功能。

    Spring in Action(第2版)中文版

    3.4注册自定义属性编辑器 3.5使用spring的特殊bean 3.5.1后处理bean 3.5.2bean工厂的后处理 3.5.3配置属性的外在化 3.5.4提取文本消息 3.5.5程序事件的解耦 3.5.6让bean了解容器 3.6脚本化的bean 3.6.1给...

    互联网创意产品众筹平台

    问题一箩筐-自定义监听器,解决上下文路径使用问题 │ 10.问题一箩筐-重载-笔试题+ i4 I$ j6 d/ [- j: d │ 11.问题一箩筐-悲观锁和乐观锁7 L; ^; s& i# h/ l8 O$ m/ \' F │ 12.登录业务介绍-界面介绍! Z9 ?( h9 e$ ...

Global site tag (gtag.js) - Google Analytics