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对象
第二种方式经过上面两步就可以定义一个全局的属性编辑器了。
注意:当使用了
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!