You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Kevin HaleBoyes <kz...@yahoo.com> on 2002/11/27 19:13:57 UTC

question about empty form fields

I have a FormBean that has all strings as the datatypes.
I then have a DTO bean that has the "proper" datatypes for the
different properties - java.sql.Date, int, etc.

In my JSP form I have an input field that is supposed to represent
a date field.  It is not a required field.  I'm not using the 
Validator framework.

    <html:text property="assignedDate" size="12"/>

So, when the form is submitted with the assignedDate field have not
been set, the value in the FormBean is the empty string "".

After validating the fields in the FormBean,
I call BeanUtils.copyProperties() to move the values from the
FormBean into the DTO but I get a ConversionException on this
empty field.  I've attached the exception report below.

If I fill in the field with a properly formed date then everything
works fine.  It is only when I leave the field empty that I get
the exception.

Am I doing something I shouldn't?  Just as an empty string field
is valid and handled properly, I feel that an empty date field is
valid and should be handled properly.

How can I fix it?  I could check the value of the date fields and
if they are empty then I could set them to null (which
SqlDateConverter handles correctly) but this is a hack!
I could also register my own converter that handles an empty string
for input but I feel that this is such a common use case for input
date strings I'm confused that it isn't handled.

Thanks for any help,
Kevin.






org.apache.commons.beanutils.ConversionException
        at
org.apache.commons.beanutils.converters.SqlDateConverter.convert(SqlDateConverter.java:162)
        at
org.apache.commons.beanutils.BeanUtils.copyProperty(BeanUtils.java:359)
        at
org.apache.commons.beanutils.BeanUtils.copyProperties(BeanUtils.java:265)
        at
com.illuminat.cml.LoanRequestSaveAction.execute(LoanRequestSaveAction.java:130)
        at
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:446)
        at
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:266)
        at
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1292)
        at
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:510)
        at
javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
        at
javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
        at
com.illuminat.cml.IdentityFilter.doFilter(IdentityFilter.java:101)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
        at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
        at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
        at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:527)
        at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2396)
        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
        at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
        at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
        at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
        at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
        at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
        at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:469)
        at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
        at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at
org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1040)
        at
org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1151)
        at java.lang.Thread.run(Thread.java:536)
Caused by: java.lang.IllegalArgumentException
        at java.sql.Date.valueOf(Date.java:100)
        at
org.apache.commons.beanutils.converters.SqlDateConverter.convert(SqlDateConverter.java:157)
        ... 42 more


__________________________________________________
Do you Yahoo!?
Yahoo! Mail Plus - Powerful. Affordable. Sign up now.
http://mailplus.yahoo.com

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