1、自定义一个实现了PropertyRegisterSuppor接口的编辑器

2、让spring感知到自己定义的编辑器:自定义个一个属性编辑器的注册器,实现PropertyEditeRegister接口

3、让spring 能够识别到对应的注册器

具体代码实现:

address类和custom类

public class Address {private String province;private String city;private String town;public String getProvince() {return province;}public void setProvince(String province) {this.province = province;}public String getCity() {return city;}public void setCity(String city) {this.city = city;}public String getTown() {return town;}public void setTown(String town) {this.town = town;}@Overridepublic String toString() {return "Address{" +"province='" + province + '\'' +", city='" + city + '\'' +", town='" + town + '\'' +'}';}
}
public class Customer {private String name;private Address address;public String getName() {return name;}public void setName(String name) {this.name = name;}public Address getAddress() {return address;}public void setAddress(Address address) {this.address = address;}@Overridepublic String toString() {return "Customer{" +"name='" + name + '\'' +", address=" + address +'}';}
}

值编辑器:

import java.beans.PropertyEditorSupport;public class AddressPropertyEditor  extends PropertyEditorSupport {@Overridepublic void setAsText(String text) throws IllegalArgumentException {String[] s = text.split("_");Address address = new Address();address.setProvince(s[0]);address.setCity(s[1]);address.setTown(s[2]);this.setValue(address);}
}

值注册器:

import org.springframework.beans.PropertyEditorRegistrar;
import org.springframework.beans.PropertyEditorRegistry;import java.beans.PropertyEditor;public class AddressPropertyEditorRegistrar implements PropertyEditorRegistrar {@Overridepublic void registerCustomEditors(PropertyEditorRegistry registry) {registry.registerCustomEditor(Address.class,new AddressPropertyEditor());}
}

将注册器加入到spring中

import org.springframework.beans.PropertyEditorRegistrar;
import org.springframework.beans.factory.config.CustomEditorConfigurer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;import java.util.Arrays;
import java.util.Collections;@Configuration
public class AddressPropertyConfiguration {@Beanpublic static CustomEditorConfigurer editorConfigurer() {CustomEditorConfigurer customEditorConfigurer = new CustomEditorConfigurer();customEditorConfigurer.setPropertyEditorRegistrars(new PropertyEditorRegistrar[]{new AddressPropertyEditorRegistrar()});return customEditorConfigurer;}}

如何实现自定义的属性编辑器相关推荐

  1. springMVC4(9)属性编辑器剖析入参类型转换原理

    我们通过Http请求提交的参数都以字符串的形式呈现,但最终在springMVC的方法入参中,我们却能得到各种类型的数据,包括Number.Boolean.复杂对象类型.集合类型.Map类型等,这些都是 ...

  2. 【Spring 基础篇三】属性注入与属性编辑器

         上篇我们了解了一下applicationContext.xml的两种注入方式,本篇我们来了解一下关于属性的注入以及操作.      在敲代码的过程中,我们很容易遇到这样的问题,比如一个Lis ...

  3. 【Spring】—-常用属性注入及属性编辑器(三)

    对于对象的注入,我们使用ref方式,可以指定注入的对象,下面看下属性的注入,以及当spring无法转换基本类型进行注入时,如何编写一个类似转换器的东西来完成注入. [属性注入] 常见属性的注入:int ...

  4. 【Java基础】属性编辑器PropertyEditor

    在Spring配置文件里,我们往往通过字面值为Bean各种类型的属性提供设置值:不管是double类型还是int类型,在配置文件中都对应字符串类型的字面值.BeanWrapper填充Bean属性时如何 ...

  5. 用mel编写自定义节点的属性编辑器界面

    用mel编写自定义节点的属性编辑器界面比较麻烦,而且网上例子又少,下面给出一个范例,说明基本的格式 // 初始化节点时调用 global proc initControl(string $attrNa ...

  6. Spring - Java/J2EE Application Framework 应用框架 第 4 章 属性编辑器,数据绑定,校验与BeanWeapper(Bean封装)

    第 4 章 属性编辑器,数据绑定,校验与BeanWeapper(Bean封装) 4.1. 简介 是否需要对业务逻辑进行验证是一个常见的问题. 有关这一点存在两种截然想法的回答,Spring提出的验证模 ...

  7. C#控件开发---控件属性编辑器

    最近项目需要用到自定义控件的属性需要多选,我们知道默认的属性一般都是下拉输入之类的,也有多选,但是我需要的是checkbox,没有现成的,百度发现微软有提供接口UITypeEditor ,继承这个基类 ...

  8. Unity编辑器教程用法——自定义Inspector 面板编辑器Chinar

    Chinar blog :www.chinar.xin 自定义Inspector 面板编辑器 本文提供全流程,中文翻译. Chinar 的初衷是将一种简单的生活方式带给世人 使有限时间 具备无限可能 ...

  9. C#自定义PropertyGrid属性

    网络转载,原文来自:http://blog.csdn.net/lxping1012/article/details/7073944 最近用到了PropertyGrid,原来从来没用到过,拿在手里,一头 ...

最新文章

  1. 面试让你手写SQL的时候,你慌了没?
  2. Android Studio - HPROF文件查看和分析工具
  3. [导入]关于怎样通过xslt向.NET扩展函数传递OuterXml属性
  4. python 自然语言处理(二) jieba 分词
  5. 遇见C++ AMP:在GPU上做并行计算
  6. 【312】◀▶ arcpy 常用函数说明
  7. html 隐藏_HTML实战篇:纯css制作二级横向以及竖向菜单导航
  8. UML图---基本概念
  9. app营销实训报告_第七届全国金融与证券投资模拟实训大赛圆满落幕!
  10. 【OCR技术】大批量生成文字训练集
  11. 计算机之间是如何进行通信的?;详解三次握手和四次挥手
  12. 【转】图的割点、桥与双连通分支
  13. javascript中replace的正则表达式语法
  14. 微信小程序(云开发)----微信支付
  15. usbserialch340驱动安装失败_CH340驱动|CH340系列USB转串口驱动下载win7/win10 64位 - 欧普软件下载...
  16. linux下反汇编命令,Linux下反汇编指定的函数
  17. 五线谱音名和组别对照表_五线谱上区别各个音的组别
  18. vue生命周期学习(watch跟computed)
  19. 项目管理助力组织赢在VUCA时代
  20. 联想小新pro14 2022款和2021款的区别

热门文章

  1. Django项目实战——用户投票系统(三)
  2. SVM 核函数的选择
  3. 伯恩斯新情绪疗法--提升自尊的特效方法
  4. 我的第一个翻译作品 - Acrobat core API中的两章
  5. delete 语句解析与执行
  6. 弹弹堂分析与部分源码模拟实现
  7. DeFi生态离普及还差一个大众级入口 |链捕手
  8. Goland最新服务器激活
  9. java图片转成base64传给前端
  10. 程序员笔记软件Boostnote