SpringMVC自定义属性编辑器详解及实例
SpringMVC自定义属性编辑器详解及实例
自定义springMVC的属性编辑器主要有两种方式,一种是使用@InitBinder标签在运行期注册一个属性编辑器,这种编辑器只在当前Controller里面有效;还有一种是实现自己的WebBindingInitializer,然后定义一个AnnotationMethodHandlerAdapter的bean,在此bean里面进行注册,这种属性编辑器是全局的。
第一种方式:
importjava.beans.PropertyEditorSupport;
importjava.io.IOException;
importjava.text.SimpleDateFormat;
importjava.util.Date;
importjavax.servlet.http.HttpServletResponse;
importorg.springframework.beans.propertyeditors.CustomDateEditor;
importorg.springframework.stereotype.Controller;
importorg.springframework.web.bind.WebDataBinder;
importorg.springframework.web.bind.annotation.InitBinder;
importorg.springframework.web.bind.annotation.PathVariable;
importorg.springframework.web.bind.annotation.RequestMapping;
@Controller
publicclassGlobalController{
@RequestMapping("test/{date}")
publicvoidtest(@PathVariableDatedate,HttpServletResponseresponse)throwsIOException
response.getWriter().write(date);
}
@InitBinder//必须有一个参数WebDataBinder
publicvoidinitBinder(WebDataBinderbinder){
binder.registerCustomEditor(Date.class,newCustomDateEditor(newSimpleDateFormat("yyyy-MM-dd"),false));
binder.registerCustomEditor(int.class,newPropertyEditorSupport(){
@Override
publicStringgetAsText(){
//TODOAuto-generatedmethodstub
returngetValue().toString();
}
@Override
publicvoidsetAsText(Stringtext)throwsIllegalArgumentException{
//TODOAuto-generatedmethodstub
System.out.println(text+"...........................................");
setValue(Integer.parseInt(text));
}
});
}
}
这种方式这样写了就可以了
第二种:
1.定义自己的WebBindingInitializer
packagecom.xxx.blog.util;
importjava.util.Date;
importjava.text.SimpleDateFormat;
importorg.springframework.beans.propertyeditors.CustomDateEditor;
importorg.springframework.web.bind.WebDataBinder;
importorg.springframework.web.bind.support.WebBindingInitializer;
importorg.springframework.web.context.request.WebRequest;
publicclassMyWebBindingInitializerimplementsWebBindingInitializer{
@Override
publicvoidinitBinder(WebDataBinderbinder,WebRequestrequest){
//TODOAuto-generatedmethodstub
binder.registerCustomEditor(Date.class,newCustomDateEditor(newSimpleDateFormat("yyyy-MM-dd"),false));
}
}
2.在springMVC的配置文件里面定义一个AnnotationMethodHandlerAdapter,并设置其WebBindingInitializer属性为我们自己定义的WebBindingInitializer对象
第二种方式经过上面两步就可以定义一个全局的属性编辑器了。
注意:当使用了
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!