自定义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));
- }
- });
- }
- }
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));
- }
- }
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>
<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。
转自iteye-234390216用户,http://haohaoxuexi.iteye.com/blog/1190065。
相关推荐
自定义属性编辑器需要继承`java.beans.PropertyEditorSupport`类,并重写`setAsText()`和`getAsText()`方法,前者用于将文本转换为对象,后者则是将对象转换为字符串。注册自定义属性编辑器可以通过`@InitBinder`...
SpringMVC自定义属性编辑器详解及实例 自定义springMVC的属性编辑器主要有两种方式,一种是使用@InitBinder标签在运行期注册一个属性编辑器,这种编辑器只在当前Controller里面有效;还有一种是实现自己的 ...
如果想多个Controller需要共同注册相同的属性编辑器,可以实现PropertyEditorRegistrar接口,并注入webBindingInitializer中。 自定义WebBindingInitializer可以注册多个属性编辑器,例如,可以注册一个日期类型的...
今天我们要讨论的是名为“j2eeGenerator-1.0”的代码生成器,它专门针对SpringMVC框架,由开发者feltfjc倾力打造。本文将详细介绍这个工具的特性和应用,以及如何利用它来快速构建包含BO(Business Object)、...
@InitBinder 注解的作用是初始化 WebDataBinder,用于绑定请求参数到指定的属性编辑器。WebDataBinder 是用来绑定请求参数到指定的属性编辑器。由于前台传到 controller里的值是 String 类型的,当往 Model 里 Set ...
在Spring 3.1之前的版本中,如果需要对特定类型的参数进行格式化或者转换,可以使用`@InitBinder`注解来注册一个自定义的编辑器(`CustomEditor`)或转换器(`Converter`)。下面是一个例子: ```java import org....
接着,在Spring配置中注册这个自定义编辑器: ```java @Configuration @EnableWebMvc public class WebConfig extends WebMvcConfigurerAdapter { @Override public void initBinder(WebDataBinder binder) { ...
标题“springmvc+bootstrap+jsqumbile”表明这是一个关于使用Spring MVC框架、Bootstrap前端UI库以及jqGrid数据展示组件的项目。这三个技术是构建现代Web应用的常见组合,Spring MVC用于后端处理,Bootstrap用于前端...
-- propertyEditorRegistrars用于属性编辑器 --> <!-- <property name="propertyEditorRegistrars"> <list> <ref bean="customPropertyEditor" /> </list> </property> --> ``` 在上面的配置中,我们使用 `...
**7.9 spring自定义属性编辑器** 允许开发者定义自己的转换规则,以满足特定的需求。 #### AOP面向切面 **8.1 AOP概述** 面向切面编程是一种编程范式,用于处理横切关注点,即那些散布在整个应用程序中的、与...
6. **拦截器**:Spring MVC的拦截器机制允许我们在请求处理之前和之后执行自定义逻辑。拦截器可以用于日志记录、权限检查、性能统计等多种用途。通过实现`HandlerInterceptor`接口或继承`HandlerInterceptorAdapter`...
本篇文章将详细探讨如何将流行的富文本编辑器UEditor与SpringMVC框架整合,解决实际开发中的相关问题。 首先,UEditor是一款由百度开发的开源富文本编辑器,它提供了丰富的编辑功能,如文本格式化、图片上传、视频...
此外,还可以使用属性编辑器(PropertyEditor)进行类型转换,比如将字符串转换为整数或浮点数。 为了处理多个请求,Spring MVC 提供了 `MultiActionController` 类,该类允许你为每个请求定义一个方法。方法签名...
此外,文章还提到了请求处理方法的签名规约,包括如何注册自定义的属性编辑器,以及如何准备数据等实践技巧。 总结来说,Spring MVC的注解功能使得配置更加简洁,降低了开发复杂性,提高了代码的可读性和可维护性。...
首先,SpringMVC 是一个模型-视图-控制器(MVC)框架,它允许开发者将业务逻辑、数据处理和用户界面进行分离。而 Hibernate 是一个 Java ORM(对象关系映射)工具,它简化了与数据库的交互,使得开发者能够通过面向...
这些编辑器会将请求参数中的多个值转换为集合或 Map 类型。例如,如果有多个同名的请求参数,它们会被转换为一个 List 对象。 此外,SpringMVC 还支持数据验证。我们可以使用 JSR-303 或 Hibernate Validator 规范...