Here is some replies when I asked the same question before, hope it helps.

Regards
----- Original Message -----
From: "JEROME RAULINE" <[EMAIL PROTECTED]>
To: "Yujun Liang" <[EMAIL PROTECTED]>
Sent: Friday, October 28, 2005 6:53 PM
Subject: java.util.Date in Action Form Bean


> Hi,
>
> You'd better use a String object, and then convert it into a
> java.*.Date. This way, you can check the date format and tell the user
> that it's wrong. Using a Date object, you'll have null if the format is
> not corresponding. And then, you don't know if the user used a wrong
> date or if he does not fill it out at all.
>
> Regards
>
>
> 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?
>
>
>

----- Original Message -----
From: "Laurie Harper" <[EMAIL PROTECTED]>
To: <dev@struts.apache.org>
Sent: Saturday, October 29, 2005 2:17 AM
Subject: Re: java.util.Date in Action Form Bean


> So far I'm doing this by registering a custom implementation of
> Converter which I instantiate with a suitable instance of
> SimpleDateFormat before calling BeanUtilsBean.copyProperties().
>
> There's also the beanutils.locale package, which provides Locale-aware
> conversions and includes support for java.util.Date (I think) out of the
> box. Unfortunately, it's not obvious how to use it. I posted a thread on
> the commons-user list asking for guidance, though I haven't seen a
> response yet.
>
> For what it's worth, here's a rough outline of doing this the 'easy'
> (i.e. inelegant!) way:
>
> final SimpleDateFormat sdf = ...
> BeanUtilsBean utils = new BeanUtilsBean();
> ConvertUtilsBean ctuils = utils.getConvertUtils();
> cutils.register(new Converter() {
> public Object convert(Class clazz, Object value) {
> return sdf.parse((String) value);
> },
> Date.class);
> utils.copyProperties(...
>
> That's untested code, and the implementation of convert() should incude
> checks for value being null, not a String, etc and handling for if the
> date can't be parsed... but it gives you the rough idea.
>
> L.
>


----- Original Message -----
From: "Murray Collingwood" <[EMAIL PROTECTED]>
To: "Struts Users Mailing List" <user@struts.apache.org>
Sent: Friday, October 28, 2005 3:44 PM
Subject: Re: java.util.Date in Action Form Bean


> Hi
>
> I add additional getters and setters for handling dates and prices (and
other special
> numeric formats). For example, in addition to the normal getter I code an
additional
> one to retrieve the date as a string.
>
> public Date getDateStart() {
> return dateStart;
> }
> public String getDateStartAsString() {
> if (dateStart == null) return "";
> return Focus.date2String(dateStart);
> }
>
>
> I then code up some static methods to format dates to strings and similar
methods to
> make the opposite translation (string back to date). For example, a method
from my
> Focus class related to the above code:
>
> public static String date2String(Date date) {
> return sdf.format(date);
> }
>
> And if you're desparate, here is the sdf definition:
>
> private static SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
>
> You can do the same thing with a Timestamp, depends how many fields you
want to
> declare on your form and how much data entry you want your user to do. I
used a
> similar method in my Focus class to get/set the date portion of the
timestamp value:
>
> public static String timestamp2String(Timestamp ts) {
> if (ts == null) return "";
> return date2String(new Date(ts.getTime()));
> }
>
> HTH
> mc


----- Original Message -----
From: "Richard Yee" <[EMAIL PROTECTED]>
To: "Struts Users Mailing List" <user@struts.apache.org>
Sent: Saturday, October 29, 2005 12:48 AM
Subject: Re: java.util.Date in Action Form Bean


> You should be aware that when using a java.text.DateFormat class or its
> subclass as a static variable in a bean that can be accessed via
> multiple threads simultaneously, you need to synchronize access to it
> because DateFormat is not thread-safe. So you should change the code
> below to:
>
> public static synchronized String date2String(Date date) {
> return sdf.format(date);
> }
>
> or
>
> public static String date2String(Date date) {
> synchronized (date) {
> return sdf.format(date);
> }
> }
>
>
>
> This is from the DateFormat Javadoc:Synchronization
>
> Date formats are not synchronized. It is recommended to create separate
> format instances for each thread. If multiple threads access a format
> concurrently, it must be synchronized externally.
>
> Regards,
>
> Richard


----- Original Message -----
From: "Ryan Stewart" <[EMAIL PROTECTED]>
To: <dev@struts.apache.org>
Sent: Saturday, October 29, 2005 2:10 PM
Subject: Re: java.util.Date in Action Form Bean


> Not to mention that DateFormats are not thread-safe, and I'm fairly sure
> Converter access is not synchronized.
>
>> ----



On 11/17/05, Jesus Salvo Jr. <[EMAIL PROTECTED]> wrote:
>
>
> Struts 1.2.7
>
> How do u use a ActionForm formbean with a java.util.Date as a property ?
> The form bean is defined as follows in struts-config.xml:
>
> <form-bean name="campaignForm" type=" com.mig.provisioning.CampaignForm"/>
>
> .. and the actual bean has the following methods:
>
> public void setLiveDate(Date liveDate) {
> this.liveDate = liveDate;
> }
> public Date getPreLiveDate() {
> return preLiveDate;
> }
>
>
> I am getting a the exception below:
>
> java.lang.IllegalArgumentException: Cannot invoke
> com.mig.provisioning.CampaignForm.setPreLiveDate - argument type mismatch
> at org.apache.commons.beanutils.PropertyUtilsBean.invokeMethod(
> PropertyUtilsBean.java:1778)
> at org.apache.commons.beanutils.PropertyUtilsBean.setSimpleProperty(
> PropertyUtilsBean.java:1759)
> at org.apache.commons.beanutils.PropertyUtilsBean.setNestedProperty (
> PropertyUtilsBean.java:1648)
> at org.apache.commons.beanutils.PropertyUtilsBean.setProperty(
> PropertyUtilsBean.java:1677)
> at org.apache.commons.beanutils.BeanUtilsBean.setProperty(
> BeanUtilsBean.java:1022)
> 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 :716)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:809)
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>


--
Yujun Liang
[EMAIL PROTECTED]

Reply via email to