详解SpringMVC注解@initbinder解决类型转换问题
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)

SpringMVC 注解 @InitBinder 解决类型转换问题 在使用 SpringMVC 框架时,经常会遇到表单中的日期字符串和 JavaBean 的 Date 类型的转换问题。 SpringMVC 默认不支持这个格式的转换,因此需要手动配置,自定义数据的绑定才能解决这个问题。在需要日期转换的 Controller 中使用 SpringMVC 的注解 @InitBinder 和 Spring 自带的 WebDataBinder 类来操作。 @InitBinder 注解的作用是初始化 WebDataBinder,用于绑定请求参数到指定的属性编辑器。WebDataBinder 是用来绑定请求参数到指定的属性编辑器。由于前台传到 controller里的值是 String 类型的,当往 Model 里 Set 这个值的时候,如果 set 的这个属性是个对象,Spring 就会去找到对应的 editor 进行转换,然后再 SET 进去。 在使用 @InitBinder 时,需要在 Controller 中定义一个方法,并使用 @InitBinder 注解标注该方法。例如: ``` @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 注解来标注 initBinder 方法,并在该方法中使用 WebDataBinder 的 registerCustomEditor 方法来注册一个自定义的日期编辑器,用于将字符串类型的日期转换为 Date 类型。 在 SpringMVC 的配置文件中,我们需要添加以下配置以启用自定义的日期编辑器: ``` <!-- 解析器注册 --> <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"/> ``` 或者使用以下简洁的配置方式: ``` <mvc:annotation-driven> <mvc:message-converters> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <constructor-arg value="UTF-8"/> </bean> </mvc:message-converters> </mvc:annotation-driven> ``` SpringMVC 在绑定表单之前,都会先注册这些编辑器,Spring 自己提供了大量的实现类,诸如 CustomDateEditor、CustomBooleanEditor、CustomNumberEditor 等许多,基本上够用。使用时候调用 WebDataBinder 的 registerCustomEditor 方法 registerCustomEditor 源码: ``` public void registerCustomEditor(Class<?> requiredType, PropertyEditor propertyEditor) { getPropertyEditorRegistry().registerCustomEditor(requiredType, propertyEditor); } ``` 第一个参数 requiredType 是需要转化的类型。第二个参数 PropertyEditor 是属性编辑器,它是个接口,以上提到的如 CustomDateEditor 等都是继承了实现了这个接口的 PropertyEditorSupport 类。 我们也可以不使用他们自带的这些编辑器类。我们可以自己构造一个自定义的编辑器类,例如: ``` import org.springframework.beans.propertyeditors.PropertiesEditor; public class DoubleEditor extends PropertyEditorSupport { @Override public void setAsText(String text) throws IllegalArgumentExcepition { // 自定义的编辑器逻辑 } } ``` 使用 @InitBinder 注解和 WebDataBinder 类可以解决 SpringMVC 中的类型转换问题,并提供了灵活的自定义编辑器机制,以满足不同的业务需求。



























- 粉丝: 5
- 资源: 878
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- Delphi 12.3控件之RichView.rar
- Delphi 12.3控件之resource.rar
- 刷课时小工具,可支持20个url,顺序打开url
- 2_数字电子技术实验一 逻辑电路及其描述工具(Logisim).docx
- Delphi 12.3控件之ReportBuilder-Enterprise-22.05-for-Delphi-12.rar
- py源码-软考-管理和查询软考(软件水平考试)相关资源
- 采用springboot框架基于JAVA语言的在线考试与学习交流网页平台(完整Java源码+数据库sql文件+项目文档+Java项目编程实战+编程练手好项目).zip
- Delphi 12.3控件之recoverytoolboxforexcelinstall.rar
- 基于核插值的多模态沿测地线路径规划研究
- 交直流配电网联合优化调度模型及其应用
- X810基于MATLAB的森林生物声音分析系统.rar
- CLShanYanSDKDataList.sqlite
- py源码-uniapp-API数据获取
- 【新榜研究院】2023年度文旅内容洞察报告.pdf
- 小智AI-v1.5.2-立创实战派ESP32S3固件
- CNIMMessageDBManager_SQL.sqlite



- 1
- 2
前往页