Hello, I am working on a project using Struts. Struts uses BeanUtil to populate Action Form Bean. This is such a nice framework to work with, except,
BeanUtil doesn't support java.util.Date conversion. But when I use java.sql.Timestamp, it asks for the format of yyyy-mm-dd hh:mm:ss.fffffffff Here is the exception when I enter other format, Caused by: java.lang.IllegalArgumentException: Timestamp format must be yyyy-mm-dd hh:mm:ss.fffffffff In a web application, it is not reasonable to ask user to input yyyy-mm-dd hh:mm:ss.fffffffff. Also, it doesn't support Locale. Do you have experience getting java.util.Date populated in a Java Bean inside a FormBean? Thanks in advance. Regards Yujun Liang [EMAIL PROTECTED] (0408) 467 448 1. Form Bean Definition, <form-bean name="myForm" type="org.apache.struts.validator.DynaValidatorForm"> <form-property name="mybean" type="com.mycompany.myproject.bean.MyBean"/> </form-bean> 2. Java Bean, package com.mycompany.myproject.bean; import java.io.Serializable; import java.sql.Timestamp; import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.commons.lang.builder.ToStringBuilder; public abstract class MyBean implements Serializable { private long interchangeId; private Timestamp creationTime; private String originatingChannel; public long getInterchangeId() { return this.interchangeId; } public void setInterchangeId(long interchangeId) { this.interchangeId = interchangeId; } public Timestamp getCreationTime() { return this.creationTime; } public void setCreationTime(Timestamp creationTime) { this.creationTime = creationTime; } public String getOriginatingChannel() { return this.originatingChannel; } public void setOriginatingChannel(String originatingChannel) { this.originatingChannel = originatingChannel; } } 3. HTML Form <input name="mybean.creationTime" type="text" size="30" maxlength="30" value="25/10/2005"> <input name="mybean.originatingChannel" type="text" size="40" maxlength="40" value="originating channel1"> <input name="mybean.originatingChannelUserId" type="text" size="60" maxlength="60" value="originating_channel_userid1"> 4. Exception. [28/10/05 14:05:42:623 EST] 3f64a3f WebGroup E SRVE0026E: [Servlet Error]-[BeanUtils.populate]: org.apache.commons.beanutils.ConversionException: Timestamp format must be yyyy-mm-dd hh:mm:ss.fffffffff at org.apache.commons.beanutils.converters.SqlTimestampConverter.convert(SqlTimestampConverter.java:117) at org.apache.commons.beanutils.ConvertUtilsBean.convert(ConvertUtilsBean.java:428) at org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:1004) at org.apache.commons.beanutils.BeanUtilsBean.populate(BeanUtilsBean.java:811) at org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:298) at org.apache.struts.util.RequestUtils.populate(RequestUtils.java:493) at org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:805) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:203) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432) at javax.servlet.http.HttpServlet.service(HttpServlet.java:760) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at com.ibm.ws.webcontainer.servlet.StrictServletInstance.doService(StrictServletInstance.java:110) at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet._service(StrictLifecycleServlet.java:174) at com.ibm.ws.webcontainer.servlet.IdleServletState.service(StrictLifecycleServlet.java:313) at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet.service(StrictLifecycleServlet.java:116) at com.ibm.ws.webcontainer.servlet.ServletInstance.service(ServletInstance.java:283) at com.ibm.ws.webcontainer.servlet.ValidServletReferenceState.dispatch(ValidServletReferenceState.java:42) at com.ibm.ws.webcontainer.servlet.ServletInstanceReference.dispatch(ServletInstanceReference.java:40)