@ -24,10 +24,12 @@ import org.springframework.util.StringUtils;
@@ -24,10 +24,12 @@ import org.springframework.util.StringUtils;
/ * *
* 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 Juergen Hoeller
* @author Dave Syer
* @see org . springframework . util . StringUtils # delimitedListToStringArray
* @see org . springframework . util . StringUtils # arrayToDelimitedString
* /
@ -44,6 +46,8 @@ public class StringArrayPropertyEditor extends PropertyEditorSupport {
@@ -44,6 +46,8 @@ public class StringArrayPropertyEditor extends PropertyEditorSupport {
private final String charsToDelete ;
private final boolean emptyArrayAsNull ;
private final boolean trimValues ;
/ * *
@ -74,6 +78,18 @@ public class StringArrayPropertyEditor extends PropertyEditorSupport {
@@ -74,6 +78,18 @@ public class StringArrayPropertyEditor extends PropertyEditorSupport {
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 .
* @param separator the separator to use for splitting a { @link String }
@ -84,15 +100,33 @@ public class StringArrayPropertyEditor extends PropertyEditorSupport {
@@ -84,15 +100,33 @@ public class StringArrayPropertyEditor extends PropertyEditorSupport {
* is to be transformed into < code > null < / code >
* /
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 . charsToDelete = charsToDelete ;
this . emptyArrayAsNull = emptyArrayAsNull ;
this . trimValues = trimValues ;
}
@Override
public void setAsText ( String text ) throws IllegalArgumentException {
String [ ] array = StringUtils . delimitedListToStringArray ( text , this . separator , this . charsToDelete ) ;
if ( trimValues ) {
array = StringUtils . trimArrayElements ( array ) ;
}
if ( this . emptyArrayAsNull & & array . length = = 0 ) {
setValue ( null ) ;
}