Sorry if I'm late at getting you an answer.

But I hope others might find this helpful in the future as well.





If you follow the trail from the struts-example, you'll find just such an
example of what you are trying to do:
----------------------
struts-config.xml
----------------------
  <action-mappings>

    <!-- Edit user registration -->
    <action    path="/editRegistration"

type="org.apache.struts.webapp.example.EditRegistrationAction"
          attribute="registrationForm"
              scope="request"
           validate="false">
      <forward name="success"              path="/registration.jsp"/>
    </action>



----------------------
org.apache.struts.webapp.example.EditRegistrationAction
----------------------

163         form = new RegistrationForm();
164            if ("request".equals(mapping.getScope()))
165                request.setAttribute(mapping.getAttribute(), form);
166            else
167                session.setAttribute(mapping.getAttribute(), form);

/*
 *Notice line 165 and line 167, the mapping.getAttribute is getting
"registrationForm" from above in the struts-config.xml and storing the form
in the request by that name.
 * Now assuming that all goes well (the user filled in the form correctly),
then we go to our jsp.
 */

201                     }
202             return (mapping.findForward("success"));
203

----------------------
registration.jsp
----------------------
// Here the current bean instance is set into the pageContext by the name
"subscription"

143    <logic:iterate id="subscription" name="user"
property="subscriptions">
144      <tr>

/* Then, down here we try to create our link tag, html:link works fine for
most
 * cases, however, we need have a special case.
 * Personally, I use a custom tag every time I need to pass an id to another
action
 * This works great for me because most of my detail records are unique by
their id and not
 * by some compound key
 * Basically, it appends "id=n" where n is the id of the database record
 * that I am using/changing
 */

158      <app:linkSubscription page="/editSubscription.do?action=Delete">
159        <bean:message key="registration.deleteSubscription"/>
160      </app:linkSubscription>

/* app is defined as a custom tld. linkSubscription is of type
 * org.apache.struts.webapp.example.LinkSubscriptionTag
 */


----------------------
org.apache.struts.webapp.example.LinkSubscriptionTag
----------------------
173     Subscription subscription = null;
174     try {
175         subscription = (Subscription) pageContext.findAttribute(name);
176        } catch (ClassCastException e) {
177         subscription = null;
178     }

/*
 * Notice here that we attempt to get the form from the pageContext.
 * the variable called "name" is set to a default value of "subscription"
 * in this class.  You can have given it any name you like
 * by changing it in the logic:iterate or if you are *not* within an
iteration,
 * by adding name="myName" to the app:linkSubscription tag in
registration.jsp
 *
 * I hope that this provides some insight into writing your own custom
(struts) tags.
 * They are really quite flexible and powerful.
 *
 * As you build your application, try to think ahead and consider every
possible use
 * of a new tag, that will provide for better reuse and it will make it more
maintainable
 * for the next guy (or gal).
 *
 */






> -----Original Message-----
> From: Bryan P. Glennon [mailto:[EMAIL PROTECTED]]
> Sent: Monday, April 22, 2002 10:19 AM
> To: Struts Users Mailing List
> Subject: RE: Accessing form bean from inside a custom tag, take 2
>
>
> Christian -
>     Those were the first two things I tried. In each case, I get a null
> returned from getAttribute. I even tried
> pageContext.findAttribute("beanName") and it also returned null. I am
> pretty sure I have things configured correctly:
>     In struts-config.xml I define a form bean named fileXferBean. In the
> action mapping that will lead to the page with the custom tag, I specify
> fileXferBean for the name attribute. I see the bean get instantiated,
> but it is just not there when I try to get it from the doStartTag
> function (using ...getAttribute("fileXferBean")).
>
>     I know I should be able to do this - what am I missing?
>
> Thanks again,
> Bryan
>
>
> --
> Bryan Glennon (mailto:[EMAIL PROTECTED])
> BPG Consulting, Inc. (http://www.bpgc.com)
> Tech Question? (mailto:[EMAIL PROTECTED])
>
>
> -----Original Message-----
> From: Christian Bouessay [mailto:[EMAIL PROTECTED]]
> Sent: Monday, April 22, 2002 8:53 AM
> To: Struts Users Mailing List
> Subject: Re: Accessing form bean from inside a custom tag, take 2
>
>
> Form-bean is stored in request/session.
> And in a custom tag, you can access the property pageContext.
>
> Why not using a code like :
>
> MyFormBean form = (MyFormBean)pageContext.getAttribute("myFormBeanName",
>                                PageContext.SESSION_SCOPE);
>
> or
>
> MyFormBean form = (MyFormBean)pageContext.getAttribute("myFormBeanName",
>                                PageContext.REQUEST_SCOPE);
>
> Don't know if it answer your question :-)
> --
> C. Bouessay
>
>
>
>
> Bryan P. Glennon wrote:
> > (I tried to post this to the list yesterday, but I don't think it made
>
> > it - it is not in the list archive. Sorry if this shows up twice.)
> >
> > Is there any way to access the form bean from within the
> > doStartTag/doAfterBody functions of a custom tag?
> >
> > Thanks,
> > Bryan
> >
> > --
> > To unsubscribe, e-mail:
> <mailto:[EMAIL PROTECTED]>
> > For additional commands, e-mail:
> > <mailto:[EMAIL PROTECTED]>
> >
> >
>
>
>
>
> --
> To unsubscribe, e-mail:
> <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail:
> <mailto:[EMAIL PROTECTED]>
>
>
> --
> To unsubscribe, e-mail:
<mailto:[EMAIL PROTECTED]>
For additional commands, e-mail:
<mailto:[EMAIL PROTECTED]>



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

Reply via email to