`
zzc1684
  • 浏览: 1223439 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

springMVC自定义属性编辑器

阅读更多

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

 

第一种方式:

Java代码  收藏代码
  1. import java.beans.PropertyEditorSupport;  
  2. import java.io.IOException;  
  3. import java.text.SimpleDateFormat;  
  4. import java.util.Date;  
  5.   
  6. import javax.servlet.http.HttpServletResponse;  
  7.   
  8. import org.springframework.beans.propertyeditors.CustomDateEditor;  
  9. import org.springframework.stereotype.Controller;  
  10. import org.springframework.web.bind.WebDataBinder;  
  11. import org.springframework.web.bind.annotation.InitBinder;  
  12. import org.springframework.web.bind.annotation.PathVariable;  
  13. import org.springframework.web.bind.annotation.RequestMapping;  
  14.   
  15. @Controller  
  16. public class GlobalController {  
  17.   
  18.       
  19.     @RequestMapping("test/{date}")  
  20.     public void test(@PathVariable Date date, HttpServletResponse response) throws IOException  
  21.         response.getWriter().write( date);  
  22.   
  23.     }  
  24.       
  25.     @InitBinder//必须有一个参数WebDataBinder  
  26.     public void initBinder(WebDataBinder binder) {  
  27.         binder.registerCustomEditor(Date.classnew CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), false));  
  28.   
  29.                 binder.registerCustomEditor(int.classnew PropertyEditorSupport() {  
  30.   
  31.             @Override  
  32.             public String getAsText() {  
  33.                 // TODO Auto-generated method stub  
  34.                 return getValue().toString();  
  35.             }  
  36.   
  37.             @Override  
  38.             public void setAsText(String text) throws IllegalArgumentException {  
  39.                 // TODO Auto-generated method stub  
  40.                 System.out.println(text + "...........................................");  
  41.                 setValue(Integer.parseInt(text));  
  42.             }  
  43.               
  44.         });  
  45.     }  
  46.       
  47.       
  48. }  

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

 

 

 

第二种:

 

1.定义自己的WebBindingInitializer

 

Java代码  收藏代码
  1. package com.xxx.blog.util;  
  2.   
  3. import java.util.Date;  
  4. import java.text.SimpleDateFormat;  
  5.   
  6. import org.springframework.beans.propertyeditors.CustomDateEditor;  
  7. import org.springframework.web.bind.WebDataBinder;  
  8. import org.springframework.web.bind.support.WebBindingInitializer;  
  9. import org.springframework.web.context.request.WebRequest;  
  10.   
  11. public class MyWebBindingInitializer implements WebBindingInitializer {  
  12.   
  13.     @Override  
  14.     public void initBinder(WebDataBinder binder, WebRequest request) {  
  15.         // TODO Auto-generated method stub  
  16.         binder.registerCustomEditor(Date.classnew CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), false));  
  17.     }  
  18.   
  19. }  

 

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

 

Xml代码  收藏代码
  1. <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">  
  2.         <property name="cacheSeconds" value="0"/>  
  3.         <property name="webBindingInitializer">  
  4.             <bean class="com.xxx.blog.util.MyWebBindingInitializer"/>  
  5.         </property>  
  6.     </bean>  

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

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

 
wlxlz 写道
引用

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

请问怎么手动添加啊?
我的配置文件是这样的:
Xml代码  收藏代码
  1. <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">    
  2.         <property name="webBindingInitializer" >    
  3.             <bean class = "com.test.spring.controller.databinder.MyWebBindingInitializer"/>    
  4.         </property >    
  5.     </bean>  
  6.   
  7.     <context:component-scan base-package="com.test.spring.controller">  
  8.         <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>  
  9.     </context:component-scan>  
  10.       
  11.     <mvc:annotation-driven />  

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

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

请问怎么手动添加啊?
我的配置文件是这样的:
Xml代码  收藏代码
  1. <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">    
  2.         <property name="webBindingInitializer" >    
  3.             <bean class = "com.test.spring.controller.databinder.MyWebBindingInitializer"/>    
  4.         </property >    
  5.     </bean>  
  6.   
  7.     <context:component-scan base-package="com.test.spring.controller">  
  8.         <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>  
  9.     </context:component-scan>  
  10.       
  11.     <mvc:annotation-driven /> 
分享到:
评论

相关推荐

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

    自定义属性编辑器需要继承`java.beans.PropertyEditorSupport`类,并重写`setAsText()`和`getAsText()`方法,前者用于将文本转换为对象,后者则是将对象转换为字符串。注册自定义属性编辑器可以通过`@InitBinder`...

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

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

    SpringMVC自定义参数绑定实现详解

    如果想多个Controller需要共同注册相同的属性编辑器,可以实现PropertyEditorRegistrar接口,并注入webBindingInitializer中。 自定义WebBindingInitializer可以注册多个属性编辑器,例如,可以注册一个日期类型的...

    j2eeGenerator-1.0_代码生成器_springmvc_springmvc代码生成_feltfjc_

    今天我们要讨论的是名为“j2eeGenerator-1.0”的代码生成器,它专门针对SpringMVC框架,由开发者feltfjc倾力打造。本文将详细介绍这个工具的特性和应用,以及如何利用它来快速构建包含BO(Business Object)、...

    详解SpringMVC注解@initbinder解决类型转换问题

    @InitBinder 注解的作用是初始化 WebDataBinder,用于绑定请求参数到指定的属性编辑器。WebDataBinder 是用来绑定请求参数到指定的属性编辑器。由于前台传到 controller里的值是 String 类型的,当往 Model 里 Set ...

    springmvc高级.docx

    6. **拦截器**:Spring MVC的拦截器机制允许我们在请求处理之前和之后执行自定义逻辑。拦截器可以用于日志记录、权限检查、性能统计等多种用途。通过实现`HandlerInterceptor`接口或继承`HandlerInterceptorAdapter`...

    ueditor与springmvc结合实例

    本篇文章将详细探讨如何将流行的富文本编辑器UEditor与SpringMVC框架整合,解决实际开发中的相关问题。 首先,UEditor是一款由百度开发的开源富文本编辑器,它提供了丰富的编辑功能,如文本格式化、图片上传、视频...

    springmvc+bootstrap+jsqumbile

    标题“springmvc+bootstrap+jsqumbile”表明这是一个关于使用Spring MVC框架、Bootstrap前端UI库以及jqGrid数据展示组件的项目。这三个技术是构建现代Web应用的常见组合,Spring MVC用于后端处理,Bootstrap用于前端...

    Springmvc注解文档

    此外,文章还提到了请求处理方法的签名规约,包括如何注册自定义的属性编辑器,以及如何准备数据等实践技巧。 总结来说,Spring MVC的注解功能使得配置更加简洁,降低了开发复杂性,提高了代码的可读性和可维护性。...

    springmvc 学习笔记

    此外,还可以使用属性编辑器(PropertyEditor)进行类型转换,比如将字符串转换为整数或浮点数。 为了处理多个请求,Spring MVC 提供了 `MultiActionController` 类,该类允许你为每个请求定义一个方法。方法签名...

    跟开涛学SpringMVC(4.6)Controller接

    方法级拦截器则可以通过@HandlerInterceptorAdapter实现,用于在请求处理前和后执行自定义逻辑。 总的来说,SpringMVC的Controller接口控制器是整个框架的入口点,它将HTTP请求映射到业务逻辑,并通过视图呈现结果...

    SpringMVC 数据绑定实例详解

    这些编辑器会将请求参数中的多个值转换为集合或 Map 类型。例如,如果有多个同名的请求参数,它们会被转换为一个 List 对象。 此外,SpringMVC 还支持数据验证。我们可以使用 JSR-303 或 Hibernate Validator 规范...

    springmvc类型转换.md

    在Spring 3.1之前的版本中,如果需要对特定类型的参数进行格式化或者转换,可以使用`@InitBinder`注解来注册一个自定义的编辑器(`CustomEditor`)或转换器(`Converter`)。下面是一个例子: ```java import org....

    ckfinder和ckeditor整合的demo

    3. 配置CKEditor:在CKEditor的配置文件中,设置“filebrowserBrowseUrl”和“filebrowserUploadUrl”属性指向CKFinder的URL,这样编辑器就能知道在哪里打开文件浏览器和上传文件。 4. 测试和调试:完成配置后,...

    SpringMVC实现Validation校验过程详解

    -- propertyEditorRegistrars用于属性编辑器 --&gt; &lt;!-- &lt;property name="propertyEditorRegistrars"&gt; &lt;list&gt; &lt;ref bean="customPropertyEditor" /&gt; &lt;/list&gt; &lt;/property&gt; --&gt; ``` 在上面的配置中,我们使用 `...

    springMVC三种数据转换的Demo

    接着,在Spring配置中注册这个自定义编辑器: ```java @Configuration @EnableWebMvc public class WebConfig extends WebMvcConfigurerAdapter { @Override public void initBinder(WebDataBinder binder) { ...

Global site tag (gtag.js) - Google Analytics