You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Mark Bennett <ma...@ncmail.net> on 2005/02/22 20:25:59 UTC
java.util.Date vs java.sql.Timestamp
How can I have struts put a java.util.Date object into a Bean?
I have found that I can set a Timestamp object into a bean. THIS DOES WORK
(below). However, if I change the type on the bean to java.util.Date then I
get a stack trace (also below). I've also tried different formatting like:
value="Sat Jan 01 00:00:00 EST 2005". Any hints? Thanks.
Mark
class MyBean {
private java.sql.Timestamp myDate;
public setMyDate(java.sql.Timestamp myDate) {
this.myDate = myDate;
}
}
<input type="hidden" name="myDate" value="2005-01-01 00:00:00.0">
java.lang.IllegalArgumentException: argument type mismatch
at java.lang.reflect.Method.invoke(Native Method)
at
org.apache.commons.beanutils.PropertyUtils.setSimpleProperty(PropertyUtils.j
ava:1789)
at
org.apache.commons.beanutils.PropertyUtils.setNestedProperty(PropertyUtils.j
ava:1684)
at
org.apache.commons.beanutils.PropertyUtils.setProperty(PropertyUtils.java:17
13)
at org.apache.commons.beanutils.BeanUtils.setProperty(BeanUtils.java:1019)
at org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:808)
at org.apache.struts.util.RequestUtils.populate(RequestUtils.java:1252)
at
org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.j
ava:821)
at
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:254)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
:263)
at
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
:200)
at
weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletCo
ntext.java:2390)
at
weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java
:1959)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:137)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org
Re: java.util.Date vs java.sql.Timestamp
Posted by ma...@ncmail.net.
Awesome, Thanks!
>-- Original Message --
>Reply-To: "Struts Users Mailing List" <us...@struts.apache.org>
>Date: Tue, 22 Feb 2005 16:30:38 -0600
>To: "Mark Bennett" <ma...@ncmail.net>,
> "Struts-Users" <us...@struts.apache.org>
>From: Joe Germuska <Jo...@Germuska.com>
>Subject: Re: java.util.Date vs java.sql.Timestamp
>
>
>At 2:25 PM -0500 2/22/05, Mark Bennett wrote:
>>How can I have struts put a java.util.Date object into a Bean?
>>
>>I have found that I can set a Timestamp object into a bean. THIS DOES
WORK
>>(below). However, if I change the type on the bean to java.util.Date then
>I
>>get a stack trace (also below). I've also tried different formatting like:
>>value="Sat Jan 01 00:00:00 EST 2005". Any hints? Thanks.
>
>This is because the BeanUtils library *does* register a standard
>converter for java.sql.Timestamp (as well as java.sql.Time and
>java.sql.Date) but *does not* register a standard converter for
>java.util.Date.
>
>This is because there is a single specified String format for the SQL
>classes, while there is no String format which BeanUtils could safely
>assume for converting java.util.Date to and from a String
>representation.
>
>If you want to use java.util.Date as a property and have BeanUtils do
>conversions for you, you must register a Converter. See
>http://jakarta.apache.org/commons/beanutils/ for more information.
>
>Joe
>
>
>>Mark
>>
>>
>>class MyBean {
>> private java.sql.Timestamp myDate;
>>
>> public setMyDate(java.sql.Timestamp myDate) {
>> this.myDate = myDate;
>> }
>>}
>>
>><input type="hidden" name="myDate" value="2005-01-01 00:00:00.0">
>>
>>
>>
>>
>>
>>java.lang.IllegalArgumentException: argument type mismatch
>> at java.lang.reflect.Method.invoke(Native Method)
>> at
>>org.apache.commons.beanutils.PropertyUtils.setSimpleProperty(PropertyUtils.j
>>ava:1789)
>> at
>>org.apache.commons.beanutils.PropertyUtils.setNestedProperty(PropertyUtils.j
>>ava:1684)
>> at
>>org.apache.commons.beanutils.PropertyUtils.setProperty(PropertyUtils.java:17
>>13)
>> at
>>org.apache.commons.beanutils.BeanUtils.setProperty(BeanUtils.java:1019)
>> at org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:808)
>> at org.apache.struts.util.RequestUtils.populate(RequestUtils.java:1252)
>> at
>>org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.j
>>ava:821)
>> at
>>org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:254)
>> at
>>org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
>> at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>> at
>>weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
>>:263)
>> at
>>weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
>>:200)
>> at
>>weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletCo
>>ntext.java:2390)
>> at
>>weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java
>>:1959)
>> at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:137)
>> at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
>>
>>
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
>>For additional commands, e-mail: user-help@struts.apache.org
>
>
>--
>Joe Germuska
>Joe@Germuska.com
>http://blog.germuska.com
>"Narrow minds are weapons made for mass destruction" -The Ex
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
>For additional commands, e-mail: user-help@struts.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org
Re: java.util.Date vs java.sql.Timestamp
Posted by Joe Germuska <Jo...@Germuska.com>.
At 2:25 PM -0500 2/22/05, Mark Bennett wrote:
>How can I have struts put a java.util.Date object into a Bean?
>
>I have found that I can set a Timestamp object into a bean. THIS DOES WORK
>(below). However, if I change the type on the bean to java.util.Date then I
>get a stack trace (also below). I've also tried different formatting like:
>value="Sat Jan 01 00:00:00 EST 2005". Any hints? Thanks.
This is because the BeanUtils library *does* register a standard
converter for java.sql.Timestamp (as well as java.sql.Time and
java.sql.Date) but *does not* register a standard converter for
java.util.Date.
This is because there is a single specified String format for the SQL
classes, while there is no String format which BeanUtils could safely
assume for converting java.util.Date to and from a String
representation.
If you want to use java.util.Date as a property and have BeanUtils do
conversions for you, you must register a Converter. See
http://jakarta.apache.org/commons/beanutils/ for more information.
Joe
>Mark
>
>
>class MyBean {
> private java.sql.Timestamp myDate;
>
> public setMyDate(java.sql.Timestamp myDate) {
> this.myDate = myDate;
> }
>}
>
><input type="hidden" name="myDate" value="2005-01-01 00:00:00.0">
>
>
>
>
>
>java.lang.IllegalArgumentException: argument type mismatch
> at java.lang.reflect.Method.invoke(Native Method)
> at
>org.apache.commons.beanutils.PropertyUtils.setSimpleProperty(PropertyUtils.j
>ava:1789)
> at
>org.apache.commons.beanutils.PropertyUtils.setNestedProperty(PropertyUtils.j
>ava:1684)
> at
>org.apache.commons.beanutils.PropertyUtils.setProperty(PropertyUtils.java:17
>13)
> at
>org.apache.commons.beanutils.BeanUtils.setProperty(BeanUtils.java:1019)
> at org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:808)
> at org.apache.struts.util.RequestUtils.populate(RequestUtils.java:1252)
> at
>org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.j
>ava:821)
> at
>org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:254)
> at
>org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
> at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> at
>weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
>:263)
> at
>weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
>:200)
> at
>weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletCo
>ntext.java:2390)
> at
>weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java
>:1959)
> at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:137)
> at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
>
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
>For additional commands, e-mail: user-help@struts.apache.org
--
Joe Germuska
Joe@Germuska.com
http://blog.germuska.com
"Narrow minds are weapons made for mass destruction" -The Ex
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org
RE: java.util.Date vs java.sql.Timestamp
Posted by Joe Hertz <jh...@speakeasy.net>.
Why do you care about how it comes into the form bean?
Usually the big deal is how it winds up in the business object and there are
tools for that. FormDef does a really nice job, especially if you have to
deal with international date formats.
-----Original Message-----
From: Mark Bennett [mailto:mark.bennett@ncmail.net]
Sent: Tuesday, February 22, 2005 3:27 PM
To: Struts Users Mailing List
Subject: RE: java.util.Date vs java.sql.Timestamp
Thanks for the reply, but unless I can get it to work with java.util.Date I
will stick with the java.util.Timestamp because THIS DOES WORK implicitly
without having to use SimpleDateFormat or any try/catch blocks.
<html:hidden name="myBean" property="myRecord.myDate"/> <!-- modify
with date picker tag -->
public setMyDate(Timestamp myDate) {
this.myDate = myDate;
}
public Timestamp getMyDate() {
return this.myDate;
}
Using this I can round round trip the date as Timestamp using only basic
getters and setters. But I would PREFER it was java.util.Date which I can't
get to work.
Mark
-----Original Message-----
From: Ashish Kulkarni [mailto:kulkarni_ash1312@yahoo.com]
Sent: Tuesday, February 22, 2005 2:59 PM
To: Struts Users Mailing List
Subject: Re: java.util.Date vs java.sql.Timestamp
Hi
I would read the property as a String and then use
SimpleDateFormat to convert it to time stamp, i am not
sure if this conversion is done automatically in bean
public setMyDate(String myDateString)
{
//i dont remmember the date format
try
{
SimpleDateFormat format = new SimpleDateFormat();
java.sql.Timestamp myDate =
format.parse(myDateString);
this.myDate = myDate;
}
catch(Exception exc)
{
}
}
--- Mark Bennett <ma...@ncmail.net> wrote:
> How can I have struts put a java.util.Date object
> into a Bean?
>
> I have found that I can set a Timestamp object into
> a bean. THIS DOES WORK
> (below). However, if I change the type on the bean
> to java.util.Date then I
> get a stack trace (also below). I've also tried
> different formatting like:
> value="Sat Jan 01 00:00:00 EST 2005". Any hints?
> Thanks.
>
> Mark
>
>
> class MyBean {
> private java.sql.Timestamp myDate;
>
> public setMyDate(java.sql.Timestamp myDate) {
> this.myDate = myDate;
> }
> }
>
> <input type="hidden" name="myDate" value="2005-01-01
> 00:00:00.0">
>
>
>
>
>
> java.lang.IllegalArgumentException: argument type
> mismatch
> at java.lang.reflect.Method.invoke(Native Method)
> at
>
org.apache.commons.beanutils.PropertyUtils.setSimpleProperty(PropertyUtils.j
> ava:1789)
> at
>
org.apache.commons.beanutils.PropertyUtils.setNestedProperty(PropertyUtils.j
> ava:1684)
> at
>
org.apache.commons.beanutils.PropertyUtils.setProperty(PropertyUtils.java:17
> 13)
> at
>
org.apache.commons.beanutils.BeanUtils.setProperty(BeanUtils.java:1019)
> at
>
org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:808)
> at
>
org.apache.struts.util.RequestUtils.populate(RequestUtils.java:1252)
> at
>
org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.j
> ava:821)
> at
>
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:254)
> at
>
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
> at
>
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
> at
>
javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
> at
>
javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> at
>
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
> :263)
> at
>
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
> :200)
> at
>
weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletCo
> ntext.java:2390)
> at
>
weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java
> :1959)
> at
>
weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:137)
> at
>
weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
>
>
>
>
---------------------------------------------------------------------
> To unsubscribe, e-mail:
> user-unsubscribe@struts.apache.org
> For additional commands, e-mail:
> user-help@struts.apache.org
>
>
__________________________________
Do you Yahoo!?
Yahoo! Mail - Helps protect you from nasty viruses.
http://promotions.yahoo.com/new_mail
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org
RE: java.util.Date vs java.sql.Timestamp
Posted by Mark Bennett <ma...@ncmail.net>.
Thanks for the reply, but unless I can get it to work with java.util.Date I
will stick with the java.util.Timestamp because THIS DOES WORK implicitly
without having to use SimpleDateFormat or any try/catch blocks.
<html:hidden name="myBean" property="myRecord.myDate"/> <!-- modify
with date picker tag -->
public setMyDate(Timestamp myDate) {
this.myDate = myDate;
}
public Timestamp getMyDate() {
return this.myDate;
}
Using this I can round round trip the date as Timestamp using only basic
getters and setters. But I would PREFER it was java.util.Date which I can't
get to work.
Mark
-----Original Message-----
From: Ashish Kulkarni [mailto:kulkarni_ash1312@yahoo.com]
Sent: Tuesday, February 22, 2005 2:59 PM
To: Struts Users Mailing List
Subject: Re: java.util.Date vs java.sql.Timestamp
Hi
I would read the property as a String and then use
SimpleDateFormat to convert it to time stamp, i am not
sure if this conversion is done automatically in bean
public setMyDate(String myDateString)
{
//i dont remmember the date format
try
{
SimpleDateFormat format = new SimpleDateFormat();
java.sql.Timestamp myDate =
format.parse(myDateString);
this.myDate = myDate;
}
catch(Exception exc)
{
}
}
--- Mark Bennett <ma...@ncmail.net> wrote:
> How can I have struts put a java.util.Date object
> into a Bean?
>
> I have found that I can set a Timestamp object into
> a bean. THIS DOES WORK
> (below). However, if I change the type on the bean
> to java.util.Date then I
> get a stack trace (also below). I've also tried
> different formatting like:
> value="Sat Jan 01 00:00:00 EST 2005". Any hints?
> Thanks.
>
> Mark
>
>
> class MyBean {
> private java.sql.Timestamp myDate;
>
> public setMyDate(java.sql.Timestamp myDate) {
> this.myDate = myDate;
> }
> }
>
> <input type="hidden" name="myDate" value="2005-01-01
> 00:00:00.0">
>
>
>
>
>
> java.lang.IllegalArgumentException: argument type
> mismatch
> at java.lang.reflect.Method.invoke(Native Method)
> at
>
org.apache.commons.beanutils.PropertyUtils.setSimpleProperty(PropertyUtils.j
> ava:1789)
> at
>
org.apache.commons.beanutils.PropertyUtils.setNestedProperty(PropertyUtils.j
> ava:1684)
> at
>
org.apache.commons.beanutils.PropertyUtils.setProperty(PropertyUtils.java:17
> 13)
> at
>
org.apache.commons.beanutils.BeanUtils.setProperty(BeanUtils.java:1019)
> at
>
org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:808)
> at
>
org.apache.struts.util.RequestUtils.populate(RequestUtils.java:1252)
> at
>
org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.j
> ava:821)
> at
>
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:254)
> at
>
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
> at
>
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
> at
>
javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
> at
>
javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> at
>
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
> :263)
> at
>
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
> :200)
> at
>
weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletCo
> ntext.java:2390)
> at
>
weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java
> :1959)
> at
>
weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:137)
> at
>
weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
>
>
>
>
---------------------------------------------------------------------
> To unsubscribe, e-mail:
> user-unsubscribe@struts.apache.org
> For additional commands, e-mail:
> user-help@struts.apache.org
>
>
__________________________________
Do you Yahoo!?
Yahoo! Mail - Helps protect you from nasty viruses.
http://promotions.yahoo.com/new_mail
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org
Re: java.util.Date vs java.sql.Timestamp
Posted by Ashish Kulkarni <ku...@yahoo.com>.
Hi
I would read the property as a String and then use
SimpleDateFormat to convert it to time stamp, i am not
sure if this conversion is done automatically in bean
public setMyDate(String myDateString)
{
//i dont remmember the date format
try
{
SimpleDateFormat format = new SimpleDateFormat();
java.sql.Timestamp myDate =
format.parse(myDateString);
this.myDate = myDate;
}
catch(Exception exc)
{
}
}
--- Mark Bennett <ma...@ncmail.net> wrote:
> How can I have struts put a java.util.Date object
> into a Bean?
>
> I have found that I can set a Timestamp object into
> a bean. THIS DOES WORK
> (below). However, if I change the type on the bean
> to java.util.Date then I
> get a stack trace (also below). I've also tried
> different formatting like:
> value="Sat Jan 01 00:00:00 EST 2005". Any hints?
> Thanks.
>
> Mark
>
>
> class MyBean {
> private java.sql.Timestamp myDate;
>
> public setMyDate(java.sql.Timestamp myDate) {
> this.myDate = myDate;
> }
> }
>
> <input type="hidden" name="myDate" value="2005-01-01
> 00:00:00.0">
>
>
>
>
>
> java.lang.IllegalArgumentException: argument type
> mismatch
> at java.lang.reflect.Method.invoke(Native Method)
> at
>
org.apache.commons.beanutils.PropertyUtils.setSimpleProperty(PropertyUtils.j
> ava:1789)
> at
>
org.apache.commons.beanutils.PropertyUtils.setNestedProperty(PropertyUtils.j
> ava:1684)
> at
>
org.apache.commons.beanutils.PropertyUtils.setProperty(PropertyUtils.java:17
> 13)
> at
>
org.apache.commons.beanutils.BeanUtils.setProperty(BeanUtils.java:1019)
> at
>
org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:808)
> at
>
org.apache.struts.util.RequestUtils.populate(RequestUtils.java:1252)
> at
>
org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.j
> ava:821)
> at
>
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:254)
> at
>
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
> at
>
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
> at
>
javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
> at
>
javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> at
>
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
> :263)
> at
>
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
> :200)
> at
>
weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletCo
> ntext.java:2390)
> at
>
weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java
> :1959)
> at
>
weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:137)
> at
>
weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
>
>
>
>
---------------------------------------------------------------------
> To unsubscribe, e-mail:
> user-unsubscribe@struts.apache.org
> For additional commands, e-mail:
> user-help@struts.apache.org
>
>
__________________________________
Do you Yahoo!?
Yahoo! Mail - Helps protect you from nasty viruses.
http://promotions.yahoo.com/new_mail
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org