自定义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。
相关推荐
自定义属性编辑器需要继承`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 ...
6. **拦截器**:Spring MVC的拦截器机制允许我们在请求处理之前和之后执行自定义逻辑。拦截器可以用于日志记录、权限检查、性能统计等多种用途。通过实现`HandlerInterceptor`接口或继承`HandlerInterceptorAdapter`...
本篇文章将详细探讨如何将流行的富文本编辑器UEditor与SpringMVC框架整合,解决实际开发中的相关问题。 首先,UEditor是一款由百度开发的开源富文本编辑器,它提供了丰富的编辑功能,如文本格式化、图片上传、视频...
标题“springmvc+bootstrap+jsqumbile”表明这是一个关于使用Spring MVC框架、Bootstrap前端UI库以及jqGrid数据展示组件的项目。这三个技术是构建现代Web应用的常见组合,Spring MVC用于后端处理,Bootstrap用于前端...
此外,文章还提到了请求处理方法的签名规约,包括如何注册自定义的属性编辑器,以及如何准备数据等实践技巧。 总结来说,Spring MVC的注解功能使得配置更加简洁,降低了开发复杂性,提高了代码的可读性和可维护性。...
此外,还可以使用属性编辑器(PropertyEditor)进行类型转换,比如将字符串转换为整数或浮点数。 为了处理多个请求,Spring MVC 提供了 `MultiActionController` 类,该类允许你为每个请求定义一个方法。方法签名...
方法级拦截器则可以通过@HandlerInterceptorAdapter实现,用于在请求处理前和后执行自定义逻辑。 总的来说,SpringMVC的Controller接口控制器是整个框架的入口点,它将HTTP请求映射到业务逻辑,并通过视图呈现结果...
这些编辑器会将请求参数中的多个值转换为集合或 Map 类型。例如,如果有多个同名的请求参数,它们会被转换为一个 List 对象。 此外,SpringMVC 还支持数据验证。我们可以使用 JSR-303 或 Hibernate Validator 规范...
在Spring 3.1之前的版本中,如果需要对特定类型的参数进行格式化或者转换,可以使用`@InitBinder`注解来注册一个自定义的编辑器(`CustomEditor`)或转换器(`Converter`)。下面是一个例子: ```java import org....
3. 配置CKEditor:在CKEditor的配置文件中,设置“filebrowserBrowseUrl”和“filebrowserUploadUrl”属性指向CKFinder的URL,这样编辑器就能知道在哪里打开文件浏览器和上传文件。 4. 测试和调试:完成配置后,...
-- propertyEditorRegistrars用于属性编辑器 --> <!-- <property name="propertyEditorRegistrars"> <list> <ref bean="customPropertyEditor" /> </list> </property> --> ``` 在上面的配置中,我们使用 `...
接着,在Spring配置中注册这个自定义编辑器: ```java @Configuration @EnableWebMvc public class WebConfig extends WebMvcConfigurerAdapter { @Override public void initBinder(WebDataBinder binder) { ...