|
I got the solution.The solution that works is below.
Just create the two classes below and register them in the action like I do below and you should be all set.
To use these converters so that BeanUtils.copyProperties( ) works in
both directions I just added a static block to the top of my dispatch
Action ...
static {
DateBeanUtilsConverter dateConverter = new DateBeanUtilsConverter();
dateConverter.setFormatPattern( "MMddyyyy" );
StringBeanUtilsConverterDate myStringConverter = new StringBeanUtilsConverterDate();
myStringConverter.setFormatPattern( "MMddyyyy" );
ConvertUtils.register( dateConverter, java.util.Date.class );
ConvertUtils.register( myStringConverter, String.class );
}
The two classes are listed below. All seems to be working fine.
/** coverts java.util.Date to String using BeanUtils ***/
import org.apache.commons.beanutils.Converter;
import java.text.*;
import java.util.*;
import corporate.*;
public class DateBeanUtilsConverter implements Converter {
private String formatPattern = null;
public void setFormatPattern(String formatPattern) {
this.formatPattern = formatPattern;
}
public Object convert(Class type, Object value) {
Date date = null;
if (value != null
&& (value instanceof String)
&& (type == Date.class)) {
try {
String s = value.toString();
SimpleDateFormat formatter =
new SimpleDateFormat(formatPattern);
date = formatter.parse(s);
} catch (Exception e) {
ErrorLogging.println("DateBeanUtilsConverter: " + e);
}
}
return date;
}
}
/** coverts String to java.util.Date using BeanUtils ***/
import org.apache.commons.beanutils.Converter;
import org.apache.commons.beanutils.converters.*;
import java.text.*;
import java.util.*;
import corporate.*;
public class StringBeanUtilsConverterDate implements Converter {
private static final StringConverter stringConverter =
new StringConverter();
private String formatPattern = null;
public void setFormatPattern(String formatPattern) {
this.formatPattern = formatPattern;
}
public Object convert(Class type, Object value) {
Object returnValue = null;
if (value != null) {
if (type == String.class && (value instanceof Date)) {
SimpleDateFormat formatter =
new SimpleDateFormat(formatPattern);
String dateString = formatter.format(value);
returnValue = dateString;
} else {
returnValue = stringConverter.convert(type, value);
}
}
return returnValue;
}
}
|