SpringMVC中利用@InitBinder来对页面数据进行解析绑定的方法
程序员文章站
2022-05-03 10:26:19
在使用spingmvc框架的项目中,经常会遇到页面某些数据类型是date、integer、double等的数据要绑定到控制器的实体,或者控制器需要接受这些数据,如果这类数据...
在使用spingmvc框架的项目中,经常会遇到页面某些数据类型是date、integer、double等的数据要绑定到控制器的实体,或者控制器需要接受这些数据,如果这类数据类型不做处理的话将无法绑定。
这里我们可以使用注解@initbinder来解决这些问题,这样spingmvc在绑定表单之前,都会先注册这些编辑器。一般会将这些方法些在basecontroller中,需要进行这类转换的控制器只需继承basecontroller即可。其实spring提供了很多的实现类,如customdateeditor、custombooleaneditor、customnumbereditor等,基本上是够用的。
demo如下:
public class basecontroller { @initbinder protected void initbinder(webdatabinder binder) { binder.registercustomeditor(date.class, new mydateeditor()); binder.registercustomeditor(double.class, new doubleeditor()); binder.registercustomeditor(integer.class, new integereditor()); } private class mydateeditor extends propertyeditorsupport { @override public void setastext(string text) throws illegalargumentexception { simpledateformat format = new simpledateformat("yyyy-mm-dd hh:mm:ss"); date date = null; try { date = format.parse(text); } catch (parseexception e) { format = new simpledateformat("yyyy-mm-dd"); try { date = format.parse(text); } catch (parseexception e1) { } } setvalue(date); } } public class doubleeditor extends propertieseditor { @override public void setastext(string text) throws illegalargumentexception { if (text == null || text.equals("")) { text = "0"; } setvalue(double.parsedouble(text)); } @override public string getastext() { return getvalue().tostring(); } } public class integereditor extends propertieseditor { @override public void setastext(string text) throws illegalargumentexception { if (text == null || text.equals("")) { text = "0"; } setvalue(integer.parseint(text)); } @override public string getastext() { return getvalue().tostring(); } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
下一篇: 浅析Java随机数与定时器