首页 > 学院 > 开发设计 > 正文

springMVC注解@initbinder

2019-11-14 12:38:30
字体:
来源:转载
供稿:网友

搞了一上午的bug最终还是因为自己sPRingMVC的注解不熟悉的原因,特此记录。

在SpringMVC中,bean中定义了Date,double等类型,如果没有做任何处理的话,日期以及double都无法绑定。解决的办法就是使用spring mvc提供的@InitBinder标签在我的项目中是在BaseController中增加方法initBinder,并使用注解@InitBinder标注,那么spring mvc在绑定表单之前,都会先注册这些编辑器,当然你如果不嫌麻烦,你也可以单独的写在你的每一个controller中。剩下的控制器都继承该类。spring自己提供了大量的实现类,诸如CustomDateEditor ,CustomBooleanEditor,CustomNumberEditor等许多,基本上够用。

在实际操作中经常会碰到表单中的日期 字符串和javabean中的日期类型的属性自动转换, 而springMVC默认不支持这个格式的转换,所以必须要手动配置, 自定义数据类型的绑定才能实现这个功能。

比较简单的可以直接应用springMVC的注解@initbinder和spring自带的WebDataBinder类和操作

[java] view plain copy print?在CODE上查看代码片@InitBinder      public void initBinder(WebDataBinder binder) {          SimpleDateFormat dateFormat = new SimpleDateFormat(“yyyy-MM-dd”);          dateFormat.setLenient(false);          binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));      }  
@InitBinder    public void initBinder(WebDataBinder binder) {        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");        dateFormat.setLenient(false);        binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));    }还要在springMVC配置文件中加上

[html] view plain copy print?在CODE上查看代码片<!– 解析器注册 –>      <bean class=“org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter”>          <property name=“messageConverters”>              <list>                  <ref bean=“stringHttpMessageConverter”/>              </list>          </property>      </bean>      <!– String类型解析器,允许直接返回String类型的消息 –>      <bean id=“stringHttpMessageConverter” class=“org.springframework.http.converter.StringHttpMessageConverter”/>  
<!-- 解析器注册 -->    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">        <property name="messageConverters">            <list>                <ref bean="stringHttpMessageConverter"/>            </list>        </property>    </bean>    <!-- String类型解析器,允许直接返回String类型的消息 -->    <bean id="stringHttpMessageConverter" class="org.springframework.http.converter.StringHttpMessageConverter"/>这样就可以直接将上传的日期时间字符串绑定为日期类型的数据了


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表