As someone with good experience in MVC-based applications but a newbie
to Struts, what I understand from this discussion is that the
"recommended" implementation would have to comply, at least, with this
"guidelines":

- The conversion code is encapsulated in a separate class (I suppose one
"converter" class per each <String, Target Data Type> combination
required, right?).

- Passes all (String) parameters to a Business Object that encapsulates
the use case (I mean, the logic) and, from within that BO, use the
corresponding converter classes for getting the "actual" data object to
flow around (i.e. be eventually get-ed or set-ed from the DAOs/DTOs, bla
bla bla...)

I'm I right here or am I missing any other IMPORTANT aspect(s)?

STILL, there is something I don't get: how would you implement /
encapsulate then the opposite direction for data conversion; in other
words:

- Convert from "original" data types towards String (another method in
the same converter class?)

- Map (set) some (non-String) data object into the corresponding String
property on the form bean.

Thanks,
Freddy.

-----Mensaje original-----
De: Mark Lowe [mailto:[EMAIL PROTECTED] 
Enviado el: viernes, 26 de marzo de 2004 0:59
Para: Sreenivasa Chadalavada; Struts Users Mailing List
Asunto: Re: Handling Date objects in ActionForm gracefully

You deal with the conversion else where but not in the form bean, you  
can argue about it or just believe me. The action form sits between the

view and the action, the date conversion goes on between the action and

the model.

Your approach isn't that bad its just not to the MVC pattern that  
struts follows (not that its the only one).

Create a date convertion util class or something.

If you dont want to take my word for it here's what craig had to say  
albeit in response to a different question

<snippet>
As the original designer of Struts :-), I must point out that the  
design of
ActionForm (and the recommendation that form bean properties be  
Strings) is
***very*** deliberate.  The reason this is needed is obvious when you  
consider
the following use case:

* You have an input form that, say, accepts only integers.

* Your form bean property is of type "int".

* The user types "1b3" instead of "123", by accident.

* Based on experience with any garden variety GUI application,
   the user will expect that they receive an error message,
   plus a redisplay of the form ***WITH THE INCORRECT VALUES
   THAT WERE ENTERED DISPLAYED SO THE USER CAN CORRECT THEM***.

* The current Struts environment will throw an exception
   due to the conversion failure.

* The suggested solution will ***hopelessly*** confuse the
   nature of a form bean, which is part of the VIEW tier, with
   model beans that have native data types.

Struts does not include any sort of "user interface component model"  
where the
details of conversion are hidden inside the user interface component.   
If that
is what you are after, you should look at a *real* user interface  
component
model (such as using JavaServer Faces with a Struts application).   
Corrupting
the functionality of a form bean to *pretend* that it is a user  
interface
component is only going to create complications for the world.
</snippet>

I hope this helps

Mark

On 25 Mar 2004, at 21:26, Sreenivasa Chadalavada wrote:

>
> Application Tier is strongly typed.
>
> So if the field is a java.util.Date in the database, then the data  
> object will have the method
>
> public DataObject{
>         public java.util.Date getAsOfDate()
>         public void setAsOfDate(java.util.Date asOfDate) methods.
> }
>
> My Action form is:
>
> public MyActionForm extends ActionForm{
>         public DataObject getDataObject();
>         public void setDataObject(DataObject dataObject);
> }
>
> My jsp contains
>
> <html:text property="dataObject.asOfDate"/>
>
> This will fail if the user does not enter any date. I want the  
> (changed) struts framework to handle that.
>
> I did not want to create a new method with type String for every Date

> field
>
> Hope this explanation helps !!
>
> Thanks and Regards,
>  Sree/-
>
>
>   
>
----------------------------------------------------------------------- 
> -----------------
>  This is a PRIVATE message. If you are not the intended recipient,  
> please delete without copying and kindly advise us by e-mail of the  
> mistake in delivery. NOTE: Regardless of content, this e-mail shall  
> not operate to bind CSC to any order or other contract unless pursuant

> to explicit written agreement or government initiative expressly  
> permitting the use of e-mail for such purpose.
>   
>
----------------------------------------------------------------------- 
> -----------------
>
>
>
>
>
> Mark Lowe <mark.lowe
>  @boxstuff.com>
>
> 03/25/2004 03:17 PM
> Please respond to "Struts Users Mailing List"
>
>        
>         To:        "Struts Users Mailing List"  
> <[EMAIL PROTECTED]>
>         cc:        
>         Subject:        Re: Handling Date objects in ActionForm  
> gracefully
>
>
>
> Ask yourself why are you trying to convert types for user input?
>
>  On 25 Mar 2004, at 21:11, Sreenivasa Chadalavada wrote:
>
>  > Do you know if the behavior can be overridden?
>  >
>  > Thanks and Regards,
>  > Sree/-
>  >
>  >
>  >  
>
-----------------------------------------------------------------------
>  > -----------------
>  > This is a PRIVATE message. If you are not the intended recipient,  
>  > please
>  > delete without copying and kindly advise us by e-mail of the  
> mistake in
>  > delivery. NOTE: Regardless of content, this e-mail shall not  
> operate to
>  > bind CSC to any order or other contract unless pursuant to explicit
>  > written agreement or government initiative expressly permitting the

>  
>  > use of
>  > e-mail for such purpose.
>  >  
>
-----------------------------------------------------------------------
>  > -----------------
>  >
>  >
>  >
>  >
>  >
>  > "Takhar, Sandeep" <Sandeep.Takhar
>  > @CIBC.ca>
>  > 03/25/2004 02:53 PM
>  > Please respond to "Struts Users Mailing List"
>  >
>  >
>  >         To:     "Struts Users Mailing List"  
>  > <[EMAIL PROTECTED]>
>  >         cc:
>  >         Subject:        RE: Handling Date objects in ActionForm  
>  > gracefully
>  >
>  >
>  > yes it is.  It should be done once per classloader.
>  >
>  > When struts populates the dyna form it is string array to string  
> array
>  > conversion and uses
>  > populate method of BeanUtils which eventually calls the converters.
>  >
>  > sandeep
>  >
>  > -----Original Message-----
>  > From: Sreenivasa Chadalavada [mailto:[EMAIL PROTECTED]
>  > Sent: Thursday, March 25, 2004 2:47 PM
>  > To: Struts Users Mailing List
>  > Subject: Re: Handling Date objects in ActionForm gracefully
>  >
>  >
>  > I am thinking of overriding the struts default mechanism.
>  > Override the default behavior of  
>  > org.apache.commons.beanutils.ConvertUtils
>  >
>  > by registering
>  > a valid converter...
>  >
>  > I want to know if the above is possible..
>  >
>  > Thanks and Regards,
>  > Sree/-
>  >
>  >
>  >  
>
-----------------------------------------------------------------------
>  > -----------------
>  > This is a PRIVATE message. If you are not the intended recipient,  
>  > please
>  > delete without copying and kindly advise us by e-mail of the  
> mistake in
>  > delivery. NOTE: Regardless of content, this e-mail shall not  
> operate to
>  > bind CSC to any order or other contract unless pursuant to explicit
>  > written agreement or government initiative expressly permitting the

>  
>  > use of
>  >
>  > e-mail for such purpose.
>  >  
>
-----------------------------------------------------------------------
>  > -----------------
>  >
>  >
>  >
>  >
>  >
>  > Mark Lowe <mark.lowe
>  > @boxstuff.com>
>  > 03/25/2004 02:36 PM
>  > Please respond to "Struts Users Mailing List"
>  >
>  >
>  >         To:     "Struts Users Mailing List"
>  > <[EMAIL PROTECTED]>
>  >         cc:
>  >         Subject:        Re: Handling Date objects in ActionForm  
>  > gracefully
>  >
>  >
>  > Have it as a string and convert it to a date or calendar when you  
> pass
>  > it back to the model.
>  >
>  >
>  > On 25 Mar 2004, at 20:28, Sreenivasa Chadalavada wrote:
>  >
>  >> All,
>  >>
>  >> We are facing a problem when we define java.util.Date field in
>  >> ActionForm.
>  >>
>  >> Is there any way to override the default behavior provided by  
> Struts?
>  >>
>  >> I very much appreciate your help!!
>  >>
>  >> Thanks and Regards,
>  >> Sree/-
>  >>
>  >>
>  >>  
> ----------------------------------------------------------------------
>  >> -
>  >> -----------------
>  >> This is a PRIVATE message. If you are not the intended recipient,
>  >> please
>  >> delete without copying and kindly advise us by e-mail of the  
> mistake  
>  >> in
>  >> delivery. NOTE: Regardless of content, this e-mail shall not  
> operate  
>  >> to
>  >> bind CSC to any order or other contract unless pursuant to
explicit
>  >> written agreement or government initiative expressly permitting
the
>  >> use of
>  >> e-mail for such purpose.
>  >>  
> ----------------------------------------------------------------------
>  >> -
>  >> -----------------
>  >
>  >
>  >  
> ---------------------------------------------------------------------
>  > To unsubscribe, e-mail: [EMAIL PROTECTED]
>  > For additional commands, e-mail:
[EMAIL PROTECTED]
>  >
>  >
>  >
>  >
>  >  
> ---------------------------------------------------------------------
>  > To unsubscribe, e-mail: [EMAIL PROTECTED]
>  > For additional commands, e-mail:
[EMAIL PROTECTED]
>  >
>  >
>  >
>
>
>  ---------------------------------------------------------------------
>  To unsubscribe, e-mail: [EMAIL PROTECTED]
>  For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to