自定义springMVC的属性编辑器主要有两种方式:
一种是使用@InitBinder标签在运行期注册一个属性编辑器,这种编辑器只在当前Controller里面有效;
另一种是实现自己的 WebBindingInitializer,然后定义一个AnnotationMethodHandlerAdapter的bean,在此bean里面进行注册
第一种方式:
import java.beans.PropertyEditorSupport;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/qt")
public class QtController {
// 日期字符串转Date
public static Date dateStr2date(String dateStr) {
dateStr = dateStr.replaceAll("-", " ").replaceAll(":", " ");
String newTimeStr = "";
String[] dateStrArray = dateStr.split(" ");
int[] timeArray = { 1, 1, 1, 0, 0, 0 };
for (int i = 0; i < dateStrArray.length; i++) {
if (i < 6) {
timeArray[i] = Integer.valueOf(dateStrArray[i]);
}
}
newTimeStr = String.format("%s-%s-%s %s:%s:%s", timeArray[0], timeArray[1], timeArray[2], timeArray[3], timeArray[4], timeArray[5]);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d = null;
try {
d = sdf.parse(newTimeStr);
} catch (ParseException e) {
e.printStackTrace();
}
return d;
}
// Date转字符串
public static String date2dateStr(Date date) {
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
}
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.registerCustomEditor(Date.class, new PropertyEditorSupport() {
@Override
public String getAsText() {
return date2dateStr((Date) getValue());
}
@Override
public void setAsText(String text) {
setValue(dateStr2date(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>
分享到:
相关推荐
springmvc自定义属性编辑器和参数解析器
SpringMVC自定义属性编辑器详解及实例 自定义springMVC的属性编辑器主要有两种方式,一种是使用@InitBinder标签在运行期注册一个属性编辑器,这种编辑器只在当前Controller里面有效;还有一种是实现自己的 ...
Thymeleaf 是一个跟 Velocity、FreeMarker 类似的... Thymeleaf 提供spring标准方言和一个与 SpringMVC 完美集成的可选模块,可以快速的实现表单绑定、属性编辑器、国际化等功能。 这是3.0.5版中文参考手册,很好用。
简单说, Thymeleaf 是一个跟 Velocity、FreeMarker 类似的模板引擎,它可以完全替代 ... Thymeleaf 提供spring标准方言和一个与 SpringMVC 完美集成的可选模块,可以快速的实现表单绑定、属性编辑器、国际化等功能。
简单说, Thymeleaf 是一个跟 Velocity、FreeMarker 类似的模板引擎,它可以完全替代 ...3.Thymeleaf 提供spring标准方言和一个与 SpringMVC 完美集成的可选模块,可以快速的实现表单绑定、属性编辑器、国际化等功能。
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$ ...