全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

SpringMVC自定义属性编辑器详解及实例

SpringMVC自定义属性编辑器详解及实例

自定义springMVC的属性编辑器主要有两种方式,一种是使用@InitBinder标签在运行期注册一个属性编辑器,这种编辑器只在当前Controller里面有效;还有一种是实现自己的 WebBindingInitializer,然后定义一个AnnotationMethodHandlerAdapter的bean,在此bean里面进行注册 ,这种属性编辑器是全局的。 

第一种方式:

import java.beans.PropertyEditorSupport; 
import java.io.IOException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 
 
import javax.servlet.http.HttpServletResponse; 
 
import org.springframework.beans.propertyeditors.CustomDateEditor; 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.WebDataBinder; 
import org.springframework.web.bind.annotation.InitBinder; 
import org.springframework.web.bind.annotation.PathVariable; 
import org.springframework.web.bind.annotation.RequestMapping; 
 
@Controller 
public class GlobalController { 
 
   
  @RequestMapping("test/{date}") 
  public void test(@PathVariable Date date, HttpServletResponse response) throws IOException 
    response.getWriter().write( date); 
 
  } 
   
  @InitBinder//必须有一个参数WebDataBinder 
  public void initBinder(WebDataBinder binder) { 
    binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), false)); 
 
        binder.registerCustomEditor(int.class, new PropertyEditorSupport() { 
 
      @Override 
      public String getAsText() { 
        // TODO Auto-generated method stub 
        return getValue().toString(); 
      } 
 
      @Override 
      public void setAsText(String text) throws IllegalArgumentException { 
        // TODO Auto-generated method stub 
        System.out.println(text + "..........................................."); 
        setValue(Integer.parseInt(text)); 
      } 
       
    }); 
  } 
   
   
} 

  这种方式这样写了就可以了

 第二种: 

1.定义自己的WebBindingInitializer

package com.xxx.blog.util; 
 
import java.util.Date; 
import java.text.SimpleDateFormat; 
 
import org.springframework.beans.propertyeditors.CustomDateEditor; 
import org.springframework.web.bind.WebDataBinder; 
import org.springframework.web.bind.support.WebBindingInitializer; 
import org.springframework.web.context.request.WebRequest; 
 
public class MyWebBindingInitializer implements WebBindingInitializer { 
 
  @Override 
  public void initBinder(WebDataBinder binder, WebRequest request) { 
    // TODO Auto-generated method stub 
    binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), false)); 
  } 
 
} 
 

2.在springMVC的配置文件里面定义一个AnnotationMethodHandlerAdapter,并设置其WebBindingInitializer属性为我们自己定义的WebBindingInitializer对象 

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> 
    <property name="cacheSeconds" value="0"/> 
    <property name="webBindingInitializer"> 
      <bean class="com.xxx.blog.util.MyWebBindingInitializer"/> 
    </property> 
  </bean> 

 第二种方式经过上面两步就可以定义一个全局的属性编辑器了。

注意:当使用了<mvc:annotation-driven />的时候,它 会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean。这时候第二种方式指定的全局属性编辑器就不会起作用了,解决办法就是手动的添加上述bean,并把它们加在<mvc:annotation-driven/>的前面。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# SpringMVC自定义属性编辑器  # SpringMVC编辑器  # SpringMVC4 + MyBatis3 + SQL Server 2014整合教程(含增删改查分  # SpringMVC + jquery.uploadify实现上传文件功能  # SpringMVC+bootstrap table实例详解  # springMvc注解之@ResponseBody和@RequestBody详解  # Spring+SpringMVC+MyBatis深入学习及搭建(一)之MyBatis的基础知识  # SpringMVC中MultipartFile上传获取图片的宽度和高度详解  # 编辑器  # 自己的  # 第二种  # 自定义  # 就可以  # 在此  # 希望能  # 写了  # 只在  # 有两种  # 谢谢大家  # 并把  # 两步  # 解决办法  # 第一种  # 配置文件  # 加在  # 有一个  # 这时候  # 使用了 


相关文章: 如何用VPS主机快速搭建个人网站?  建站主机CVM配置优化、SEO策略与性能提升指南  如何零成本快速生成个人自助网站?  陕西网站制作公司有哪些,陕西凌云电器有限公司官网?  深圳企业网站制作设计,在深圳如何网上全流程注册公司?  宝塔新建站点报错如何解决?  如何在万网自助建站平台快速创建网站?  深圳网站制作案例,网页的相关名词有哪些?  制作企业网站建设方案,怎样建设一个公司网站?  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  上海网站制作开发公司,上海买房比较好的网站有哪些?  如何优化Golang Web性能_Golang HTTP服务器性能提升方法  c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】  如何快速生成橙子建站落地页链接?  定制建站哪家更专业可靠?推荐榜单揭晓  如何正确选择百度移动适配建站域名?  如何快速辨别茅台真假?关键步骤解析  如何在万网ECS上快速搭建专属网站?  魔方云NAT建站如何实现端口转发?  个人摄影网站制作流程,摄影爱好者都去什么网站?  江苏网站制作公司有哪些,江苏书法考级官方网站?  深圳网站制作的公司有哪些,dido官方网站?  如何在阿里云域名上完成建站全流程?  建站168自助建站系统:快速模板定制与SEO优化指南  如何制作网站标识牌,动态网站如何制作(教程)?  如何在Golang中使用encoding/gob序列化对象_存储和传输数据  山东网站制作公司有哪些,山东大源集团官网?  ,南京靠谱的征婚网站?  如何获取开源自助建站系统免费下载链接?  利用JavaScript实现拖拽改变元素大小  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  python的本地网站制作,如何创建本地站点?  如何在万网主机上快速搭建网站?  C++如何使用std::optional?(处理可选值)  如何在企业微信快速生成手机电脑官网?  招贴海报怎么做,什么是海报招贴?  设计网站制作公司有哪些,制作网页教程?  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  宝塔建站助手安装配置与建站模板使用全流程解析  如何打造高效商业网站?建站目的决定转化率  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  建站为何优先选择香港服务器?  如何用5美元大硬盘VPS安全高效搭建个人网站?  常州自助建站:操作简便模板丰富,企业个人快速搭建网站  javascript中的try catch异常捕获机制用法分析  如何通过FTP空间快速搭建安全高效网站?  网站制作大概多少钱一个,做一个平台网站大概多少钱?  动图在线制作网站有哪些,滑动动图图集怎么做?  实惠建站价格推荐:2025年高性价比自助建站套餐解析  如何选择适配移动端的WAP自助建站平台? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。