原文åQšhttp://www.aygfsteel.com/orangewhy/archive/2007/06/26/126371.html
java.beans.PropertyEditor的从å—义æ¥çœ‹æ˜¯ä¸€ä¸ªå±žæ€§ç¼–辑器åQŒä½†æ€»è§‰å¾—它的作用更åƒä¸€ä¸ªè{æ¢å™¨åQï¼ä»Žå—½W¦ä¸²è½¬æ¢ä¸ºç±»å¯¹è±¡çš„属性ã€?/p>
java.beans.PropertyEditor接å£å®šä¹‰çš„æ–¹æ³•æœ‰å¥½å‡ ä¸ªï¼Œä½†æ˜¯æœ€é‡è¦ä¸ÞZ¸‹é¢ä¸¤ä¸ªï¼š(x¨¬)
void setValue(Object value)
void setAsText(String text) throws java.lang.IllegalArgumentException;
一般地åQŒæˆ‘们è¦ä½¿ç”¨PropertyEditoræ—Óž¼Œòq¶ä¸ç›´æŽ¥å®žçŽ°æ¤æŽ¥å£ï¼Œè€Œæ˜¯é€šè¿‡¾l§æ‰¿å®žçŽ°æ¤æŽ¥å£çš„java.beans.PropertyEditorSupportæ¥ç®€åŒ–我们的工作åQŒåœ¨å类覆盖setAsTextæ–ÒŽ(gu¨©)³•ž®±å¯ä»¥äº†(ji¨£n)åQŒsetValueæ–ÒŽ(gu¨©)³•一般ä¸ç›´æŽ¥ä½¿ç”¨åQŒåœ¨setAsTextæ–ÒŽ(gu¨©)³•ä¸å°†å—符串进行è{æ¢åÆˆäº§ç”Ÿç›®æ ‡å¯¹è±¡ä»¥åŽåQŒç”±è°ƒsetAsText调用setValueæ¥æŠŠç›®æ ‡å¯¹è±¡æ³¨å…¥åˆ°ç¼–è¾‘å™¨ä¸ã€‚当ç„?d¨°ng)ž¼Œä½ å¯ç”¨è¦†ç›–更多的æ–Ò?gu¨©)³•æ¥æ»¡‘³ä½ 的特ŒDŠè¦æ±‚。JavaBean的类和接å£ï¼Œè¢«å¤§éƒ¨åˆ†spring包ä‹É用,å¯ä»¥ä»Žspringä¸å¦ä¹?f¨¤n)æ›´æˆç†Ÿçš„JavaBean使用æ–ÒŽ(gu¨©)³•ã€?/p>
½Ž€å•的例ååQ?/p>
实体¾c»PersonåQ?/p>
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的属性编辑器åQ?/p>
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()]);
}
}
‹¹‹è¯•代ç åQ?/p>
public static void main(String[] args)

{
PersonPropertyEditor editor = new PersonPropertyEditor();
editor.setAsText("aSam,man,22");
System.out.println(editor.getValue());
}
¾l“果输出åQ?/p>
Person[aSam, man, 22]

]]>