|
|
|
@ -24,10 +24,12 @@ import org.springframework.util.StringUtils; |
|
|
|
/** |
|
|
|
/** |
|
|
|
* Custom {@link java.beans.PropertyEditor} for String arrays. |
|
|
|
* Custom {@link java.beans.PropertyEditor} for String arrays. |
|
|
|
* |
|
|
|
* |
|
|
|
* <p>Strings must be in CSV format, with a customizable separator. |
|
|
|
* <p>Strings must be in CSV format, with a customizable separator. By default values in the result are trimmed |
|
|
|
|
|
|
|
* of whitespace. |
|
|
|
* |
|
|
|
* |
|
|
|
* @author Rod Johnson |
|
|
|
* @author Rod Johnson |
|
|
|
* @author Juergen Hoeller |
|
|
|
* @author Juergen Hoeller |
|
|
|
|
|
|
|
* @author Dave Syer |
|
|
|
* @see org.springframework.util.StringUtils#delimitedListToStringArray |
|
|
|
* @see org.springframework.util.StringUtils#delimitedListToStringArray |
|
|
|
* @see org.springframework.util.StringUtils#arrayToDelimitedString |
|
|
|
* @see org.springframework.util.StringUtils#arrayToDelimitedString |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
@ -44,6 +46,8 @@ public class StringArrayPropertyEditor extends PropertyEditorSupport { |
|
|
|
private final String charsToDelete; |
|
|
|
private final String charsToDelete; |
|
|
|
|
|
|
|
|
|
|
|
private final boolean emptyArrayAsNull; |
|
|
|
private final boolean emptyArrayAsNull; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private final boolean trimValues; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
@ -74,6 +78,18 @@ public class StringArrayPropertyEditor extends PropertyEditorSupport { |
|
|
|
this(separator, null, emptyArrayAsNull); |
|
|
|
this(separator, null, emptyArrayAsNull); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* Create a new StringArrayPropertyEditor with the given separator. |
|
|
|
|
|
|
|
* @param separator the separator to use for splitting a {@link String} |
|
|
|
|
|
|
|
* @param emptyArrayAsNull <code>true</code> if an empty String array |
|
|
|
|
|
|
|
* is to be transformed into <code>null</code> |
|
|
|
|
|
|
|
* @param trimValues <code>true</code> if the values in the parsed arrays |
|
|
|
|
|
|
|
* are to be be trimmed of whitespace (default is true). |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
public StringArrayPropertyEditor(String separator, boolean emptyArrayAsNull, boolean trimValues) { |
|
|
|
|
|
|
|
this(separator, null, emptyArrayAsNull, trimValues); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Create a new StringArrayPropertyEditor with the given separator. |
|
|
|
* Create a new StringArrayPropertyEditor with the given separator. |
|
|
|
* @param separator the separator to use for splitting a {@link String} |
|
|
|
* @param separator the separator to use for splitting a {@link String} |
|
|
|
@ -84,15 +100,33 @@ public class StringArrayPropertyEditor extends PropertyEditorSupport { |
|
|
|
* is to be transformed into <code>null</code> |
|
|
|
* is to be transformed into <code>null</code> |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public StringArrayPropertyEditor(String separator, String charsToDelete, boolean emptyArrayAsNull) { |
|
|
|
public StringArrayPropertyEditor(String separator, String charsToDelete, boolean emptyArrayAsNull) { |
|
|
|
|
|
|
|
this(separator, charsToDelete, emptyArrayAsNull, true); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* Create a new StringArrayPropertyEditor with the given separator. |
|
|
|
|
|
|
|
* @param separator the separator to use for splitting a {@link String} |
|
|
|
|
|
|
|
* @param charsToDelete a set of characters to delete, in addition to |
|
|
|
|
|
|
|
* trimming an input String. Useful for deleting unwanted line breaks: |
|
|
|
|
|
|
|
* e.g. "\r\n\f" will delete all new lines and line feeds in a String. |
|
|
|
|
|
|
|
* @param emptyArrayAsNull <code>true</code> if an empty String array |
|
|
|
|
|
|
|
* is to be transformed into <code>null</code> |
|
|
|
|
|
|
|
* @param trimValues <code>true</code> if the values in the parsed arrays |
|
|
|
|
|
|
|
* are to be be trimmed of whitespace (default is true). |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
public StringArrayPropertyEditor(String separator, String charsToDelete, boolean emptyArrayAsNull, boolean trimValues) { |
|
|
|
this.separator = separator; |
|
|
|
this.separator = separator; |
|
|
|
this.charsToDelete = charsToDelete; |
|
|
|
this.charsToDelete = charsToDelete; |
|
|
|
this.emptyArrayAsNull = emptyArrayAsNull; |
|
|
|
this.emptyArrayAsNull = emptyArrayAsNull; |
|
|
|
|
|
|
|
this.trimValues = trimValues; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public void setAsText(String text) throws IllegalArgumentException { |
|
|
|
public void setAsText(String text) throws IllegalArgumentException { |
|
|
|
String[] array = StringUtils.delimitedListToStringArray(text, this.separator, this.charsToDelete); |
|
|
|
String[] array = StringUtils.delimitedListToStringArray(text, this.separator, this.charsToDelete); |
|
|
|
|
|
|
|
if (trimValues) { |
|
|
|
|
|
|
|
array = StringUtils.trimArrayElements(array); |
|
|
|
|
|
|
|
} |
|
|
|
if (this.emptyArrayAsNull && array.length == 0) { |
|
|
|
if (this.emptyArrayAsNull && array.length == 0) { |
|
|
|
setValue(null); |
|
|
|
setValue(null); |
|
|
|
} |
|
|
|
} |
|
|
|
|