全网整合营销服务商

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

免费咨询热线: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上传获取图片的宽度和高度详解  # 编辑器  # 自己的  # 第二种  # 自定义  # 就可以  # 在此  # 希望能  # 写了  # 只在  # 有两种  # 谢谢大家  # 并把  # 两步  # 解决办法  # 第一种  # 配置文件  # 加在  # 有一个  # 这时候  # 使用了 


相关文章: 宝塔建站助手安装配置与建站模板使用全流程解析  建站之星展会模版如何一键下载生成?  如何通过云梦建站系统实现SEO快速优化?  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  济南专业网站制作公司,济南信息工程学校怎么样?  如何用已有域名快速搭建网站?  专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?  Android自定义控件实现温度旋转按钮效果  历史网站制作软件,华为如何找回被删除的网站?  宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?  如何配置WinSCP新建站点的密钥验证步骤?  php8.4新语法match怎么用_php8.4match表达式替代switch【方法】  如何快速搭建高效WAP手机网站?  平台云上自助建站如何快速打造专业网站?  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  建设网站制作价格,怎样建立自己的公司网站?  建站之星后台管理如何实现高效配置?  阿里云网站制作公司,阿里云快速搭建网站好用吗?  C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换  宁波免费建站如何选择可靠模板与平台?  如何在Windows环境下新建FTP站点并设置权限?  三星网站视频制作教程下载,三星w23网页如何全屏?  如何挑选最适合建站的高性能VPS主机?  北京的网站制作公司有哪些,哪个视频网站最好?  建站之星导航配置指南:自助建站与SEO优化全解析  建站之星收费标准详解:套餐费用及年费价格表一览  武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?  高防服务器租用首荐平台,企业级优惠套餐快速部署  ,交易猫的商品怎么发布到网站上去?  建站主机功能解析:服务器选择与快速搭建指南  c# 在高并发场景下,委托和接口调用的性能对比  如何在香港服务器上快速搭建免备案网站?  如何在西部数码注册域名并快速搭建网站?  网站制作模板下载什么软件,ppt模板免费下载网站?  ,在苏州找工作,上哪个网站比较好?  企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?  jQuery 常见小例汇总  已有域名和空间如何搭建网站?  如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本  详解jQuery停止动画——stop()方法的使用  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  广州顶尖建站服务:企业官网建设与SEO优化一体化方案  建站主机与服务器功能差异如何区分?  建站之星如何助力网站排名飙升?揭秘高效技巧  官网自助建站平台指南:在线制作、快速建站与模板选择全解析  深入理解Android中的xmlns:tools属性  香港服务器网站推广:SEO优化与外贸独立站搭建策略  建站主机选择指南:服务器配置与SEO优化实战技巧  建站之星如何一键生成手机站? 

您的项目需求

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