You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Rick Reumann <ma...@reumann.net> on 2002/10/19 18:46:58 UTC

Re: AW: BeanUtils.copyProperties(formBean, javaBean) not converting S trin g dates to java.util.Date dates

>> 
>> Hi,
>> 
>> Struts1.1b2: BeanUtils.copyProperties(formBean, javaBean) not 
>> converting
>> String properties into Dates:
>> 

   It will not covert them into java.util.Date. You need to create a
   Converter class to do it an register it. I just went through all
   this with Eldercle who posted to this list as well. 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. Let
   me know if you have any questions.

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;
    }
}
   

--

Rick

mailto:maillist@reumann.net


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>