原文:http://www.blogjava.net/orangewhy/archive/2007/06/26/126371.html
java.beans.PropertyEditor的从字义来看是一个属性编辑器,但总觉得它的作用更像一个转换器--从字符串转换为类对象的属性。
java.beans.PropertyEditor接口定义的方法有好几个,但是最重要为下面两个:
void setValue(Object value)
void setAsText(String text) throws java.lang.IllegalArgumentException;
一般地,我们要使用PropertyEditor时,并不直接实现此接口,而是通过继承实现此接口的java.beans.PropertyEditorSupport来简化我们的工作,在子类覆盖setAsText方法就可以了,setValue方法一般不直接使用,在setAsText方法中将字符串进行转换并产生目标对象以后,由调setAsText调用setValue来把目标对象注入到编辑器中。当然,你可用覆盖更多的方法来满足你的特殊要求。JavaBean的类和接口,被大部分spring包使用,可以从spring中学习更成熟的JavaBean使用方法。
简单的例子:
实体类Person:
public class Person
{
private String name;
private String sex;
private int age;
public Person(String name, String sex, int age)
{
this.name = name;
this.sex = sex;
this.age = age;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getSex()
{
return sex;
}
public void setSex(String sex)
{
this.sex = sex;
}
@Override
public String toString()
{
return "Person["+name+", "+sex+", "+age+"]";
}
}
Person的属性编辑器:
public class PersonPropertyEditor extends PropertyEditorSupport
{
public void setAsText(String text)
{
setValue(parseString(text));
}
private Object parseString(String text)
{
String[] parts = tokenizeToStringArray(text, ", ", false, false);
String name = (parts.length > 0 ? parts[0] : "undefine");
String sex = (parts.length > 1 ? parts[1] : "undefine");
int age = (parts.length > 2 ? Integer.valueOf(parts[2]) : 0);
return (text.length() > 0 ? new Person(name, sex, age) : null);
}
private String[] tokenizeToStringArray(String str, String delimiters, boolean trimTokens,
boolean ignoreEmptyTokens)
{
StringTokenizer st = new StringTokenizer(str, delimiters);
List tokens = new ArrayList();
while(st.hasMoreTokens())
{
String token = st.nextToken();
if(trimTokens)
{
token = token.trim();
}
if(!ignoreEmptyTokens || token.length() > 0)
{
tokens.add(token);
}
}
return toStringArray(tokens);
}
private String[] toStringArray(Collection collection)
{
if(collection == null)
{
return null;
}
return (String[])collection.toArray(new String[collection.size()]);
}
}
测试代码:
public static void main(String[] args)
{
PersonPropertyEditor editor = new PersonPropertyEditor();
editor.setAsText("aSam,man,22");
System.out.println(editor.getValue());
}
结果输出:
Person[aSam, man, 22]
分享到:
相关推荐
它可以帮助自定义Bean的行为,如提供默认的属性编辑器或忽略某些属性。通过实现`BeanInfo`接口,开发者可以扩展JavaBean的默认行为。 3. **PropertyDescriptor**: `PropertyDescriptor`类代表JavaBean中的一个...
其中,BeanInfo是JavaBean的元数据,PropertyDescriptor用来描述JavaBean的属性,PropertyEditor用来编辑JavaBean的属性,而VetoableChangeSupport用来支持JavaBean的 vetoable 变化。 下面,让我们来学习java....
在Spring框架中,属性编辑器(PropertyEditor)是一种强大的工具,允许我们自定义类型转换过程。当我们需要将字符串形式的数据转换为Java对象时,属性编辑器就发挥了关键作用。例如,从请求参数或配置文件中读取的...
1. 尽量保持属性编辑器简单,避免引入过多的业务逻辑。 2. 当需要处理复杂转换时,考虑使用`Converter`或`ConverterFactory`,它们在Spring 3.0之后被引入,提供了更强大的转换能力。 3. 为了代码的可读性和可维护性...
在Spring框架中,属性编辑器(PropertyEditor)扮演着至关重要的角色。它们是JavaBeans规范的一部分,用于在Java对象和其字符串表示之间进行转换。在Spring中,我们可以通过自定义属性编辑器来处理特定类型的值,...
自定义属性编辑器需要实现`java.beans.PropertyEditor`接口或其子接口`java.beans.CustomEditor`。通常,我们只需要实现`setValue`和`getAsText`这两个方法。`setValue`方法用于将字符串转换为对象,而`getAsText`则...
属性编辑器(PropertyEditor)是Java Bean规范的一部分,它允许我们在程序中将一种类型的数据转换为另一种类型。在Spring MVC中,当控制器方法接收请求参数时,如果请求参数与方法参数类型不匹配,Spring会尝试使用...
这需要实现`java.beans.PropertyEditor`接口,并通过`java.beans.beancontext.BeanContextChildSupport`来注册你的编辑器。 5. **文档注释**:为了帮助其他开发者理解你的组件,你应该在类和方法上添加详细的...
属性编辑器扩展了`java.beans.PropertyEditor`接口,允许开发者自定义如何将字符串转换为特定类型,反之亦然。例如,如果你有一个自定义的日期类,你可以创建一个属性编辑器来处理日期字符串的输入。 在实际开发中...
在Spring框架中,属性编辑器(PropertyEditor)是一个关键组件,它负责将配置文件中非标准格式的数据转换为JavaBean的可识别类型。属性编辑器是基于JavaBeans规范的,因此理解这个概念需要先了解JavaBean和JavaBeans...
`PropertyEditor`是一个简单的接口,包含`setAsText()`和`getAsString()`两个方法,分别用于将字符串转换为目标类型和将目标类型转换回字符串。 在上述内容中,提到了Spring内建的多种`PropertyEditor`,例如`...
1. 使用Struts的`PropertyEditors`:Struts提供了一套自定义属性编辑器(PropertyEditor)机制,可以注册并使用自定义的编辑器来处理特定类型的转换。例如,我们可以创建一个自定义的日期编辑器,实现`java.beans....
10.3.2.属性,数组,列表,字典,索引器 10.3.2.1.定义内联的数组、列表和词典 10.3.3.方法 10.3.4.操作符 10.3.4.1.关系操作符 10.3.4.2.逻辑操作符 10.3.4.3.算术运算符 10.3.5.赋值 10.3.6.表达式列表 10.3.7....
5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建...
5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建...
5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的...
在Spring MVC框架中,属性编辑器(PropertyEditor)是一个关键组件,它负责将用户的输入数据转换为应用程序可以处理的对象类型。这个"SpringPropertyEditorDemo"项目是为了演示如何使用自定义属性编辑器来处理用户...
在这个例子中,`customEditors`属性的`map`定义了一个键值对,其中`key`是属性类型(`java.util.Date`),`value`是属性编辑器类的全限定名(`com.zhmg.spring.PropertyEditor`)。 通过这种方式,Spring就能识别并...
5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建...