forgot about String Object.toString() method.  Looks a little tidier,
doesn't it?  Anyway, it should literally be calling the same code.  I'm
hoping BeanUtils can somehow handle translations between types like
java.util.Date and String...I'll look into it later.

----- Original Message -----
From: "Mark Lowe" <[EMAIL PROTECTED]>
To: "Struts Users Mailing List" <[EMAIL PROTECTED]>
Sent: Thursday, March 13, 2003 9:28 AM
Subject: Re: Example of accessing DynaActionFrom properties from within an
Action


I had a headache over all this until i spent a couple fo days using the
beanutils package..


org.apache.common.beanutils

The dynaaction forms are basically the same..

your means of extracting the stored values from the form look like they
should work , although i prefer using toString() rather than casting
the world..

DynaActionForm myForm = (DynaActionForm) form;
String foo = myForm.get("somekey").toString();

So what you are doing works for me...

hope this helps mark

Gioved�, 13 mar 2003, alle 15:03 Europe/Rome, Ian Hunter ha scritto:

> Since this isn't as clear as it could be, here's an example for anyone
> who
> cares:
>
>> (this class adds or updates a bulletin on a message board; all data
>> access
>> goes through a central service called the "DataStore")
>>
>> public final class UpdateBulletinAction extends Action {
>>
>>      public ActionForward execute(ActionMapping mapping, ActionForm
>> form,
>> HttpServletRequest request,  HttpServletResponse response)
>>  throws Exception {
>>
>>  ActionErrors errors = new ActionErrors();
>>
>>         DynaActionForm dynaForm = (DynaActionForm) form;
>>         UserView user =
>> (UserView)request.getSession().getAttribute(Constants.USER_KEY);
>>
>>         if (((String)((DynaActionForm)form).get ("id")).equals ("0"))
>> { //
>> ID = 0 means we're adding a bulletin
>>                 try {
>>                     BulletinView bv = DataStore.getNewBulletinView();
>>                     bv.setAccessLevel ((String)dynaForm.get
>> ("accessLevel"));
>>                     bv.setMessage ((String)dynaForm.get("message"));
>>                     DataStore.addBulletinView (bv);
>>                 } catch (ViewRecAddException e) {
>>                     servlet.log("An error occurred while user " +
>> user.getName() + " was adding a bulletin:\n" +
>>                       e.toString());
>>                     e.printStackTrace();
>>                     errors.add(ActionErrors.GLOBAL_ERROR,
>>                       new ActionError("error.databaseerror"));
>>                 }
>>         } else { // Since we have an ID, we're updating a bulletin
>>                 try {
>>                     BulletinView bv =
>> DataStore.getBulletinViewById((String)dynaForm.get("id"));
>>                     bv.setAccessLevel
> ((String)dynaForm.get("accessLevel"));
>>                     bv.setMessage ((String)dynaForm.get("message"));
>>                     DataStore.updateBulletinView (bv);
>>                 } catch (ViewRecLoadException e) {
>>                     servlet.log("An error occurred while trying to get
>> bulletin ID=" + (String)dynaForm.get("id") + " for update by user " +
>> user.getName() +
>>                       ":\n" + e.toString());
>>                     e.printStackTrace();
>>                     errors.add(ActionErrors.GLOBAL_ERROR,
>>                       new ActionError("error.databaseerror"));
>>                 } catch (ViewRecUpdateException e) {
>>                     servlet.log("An error occurred while user " +
>> user.getName() + " was updating bulletin with ID=" +
>> (String)dynaForm.get("id") +
>>                       ":\n" + e.toString());
>>                     e.printStackTrace();
>>                     errors.add(ActionErrors.GLOBAL_ERROR,
>>                       new ActionError("error.databaseerror"));
>>                 }
>>         if (!errors.isEmpty()) {
>>      saveErrors(request, errors);
>>             return (new ActionForward(mapping.getInput()));
>>         }
>>
>>         return (mapping.findForward("success"));
>>     }
>> }
>>
>> so to refer to a property of a DynaActionForm within an action, you do
>> something like
>>
>> DynaActionFrom dynaForm = (DynaActionForm) form;
>> // variable "form" comes from method execute's signature
>>
>> someVariable = (className)dynaForm.get("propertyName");
>> // to get the property; DynaActionForm.get(String property) returns an
> Object, so you have to cast it
>>
>> dynaForm.set("propertyName", someVariable);
>> // to set the property; the class of the second parameter is, again,
> "Object"
>
>
> ---------------------------------------------------------------------
> 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