Did you try request.getSession().setAttribute("RedirectHelpForm",
redirectHelpForm)?

Nils-H

On Thu, Jun 25, 2009 at 7:14 AM, Sam Wun<swun2...@gmail.com> wrote:
> How to do that with session?
> I am currently setting it in the execute() and render method with the
> following code:
> req.setAttribute("RedirectHelpForm",  redirectHelpForm);
>
> but this is for request rather than session?
>
> Thanks for the suggesion.
> sam
>
> On Thu, Jun 25, 2009 at 3:09 PM, Nils-Helge Garli
> Hegvik<nil...@gmail.com> wrote:
>> Haven't looked very deeply into it, but could it be that you're
>> setting the attribute in the action phase, and trying to access it in
>> the render phase? That won't work. In that case, you have to set it as
>> a session attribute, or set some kind of id as a render parameter and
>> re-fetch the object in the render phase.
>>
>> Nils-H
>>
>> On Thu, Jun 25, 2009 at 7:03 AM, Sam Wun<swun2...@gmail.com> wrote:
>>> Hi,
>>>
>>> I noticed the setAttribute() method is called too late in one of my
>>> Action class:
>>>
>>> import javax.portlet.PortletConfig;
>>> import javax.portlet.RenderRequest;
>>> import javax.portlet.RenderResponse;
>>>
>>> import org.apache.struts.action.ActionForm;
>>> import org.apache.struts.action.ActionForward;
>>> import org.apache.struts.action.ActionMapping;
>>>
>>>  /***
>>>  * @struts.action name="RedirectHelpForm" 
>>> path="/struts_redirect_portlet/help"
>>>  * attribute="redirectHelpForm"
>>>  * scope="session"
>>>  * input="/portlet/struts_redirect_portlet/help.jsp"
>>>  * @struts.action-forward name="help"
>>> path="/portlet/struts_redirect_portlet/help.jsp" redirect="false"
>>>  * @struts.action-forward name="step3"
>>> path="/portlet/struts_redirect_portlet/step3.jsp" redirect="false"
>>>  */
>>>
>>> public class RedirectHelpAction extends PortletAction {
>>>
>>>        public ActionForward execute(
>>>                        ActionMapping mapping, ActionForm form,
>>> HttpServletRequest req,
>>>                        HttpServletResponse res)
>>>                throws Exception {
>>>                RedirectHelpForm redirectHelpForm = (RedirectHelpForm) form;
>>>                req.setAttribute("RedirectHelpForm",  redirectHelpForm);
>>>
>>>                String name = redirectHelpForm.getName().trim();
>>>               if ( name.length() > 0) {
>>>                  return mapping.findForward("step3");
>>>                }
>>>
>>>               return mapping.findForward("help");
>>>        }
>>>
>>>
>>>        public ActionForward render(
>>>                        ActionMapping mapping, ActionForm form,
>>> PortletConfig config,
>>>                        RenderRequest req, RenderResponse res)
>>>                throws Exception {
>>>                RedirectHelpForm redirectHelpForm = (RedirectHelpForm) form;
>>>                req.setAttribute("redirectHelpForm",  redirectHelpForm);
>>>
>>>                return mapping.findForward("help");
>>>        }
>>> }
>>>
>>> The  consequence of that is resulting a "cannot find bean in any scope".
>>>
>>> Actully when the page is died on this reason, I press the back button
>>> of the browser go back to the previous page, and then pressed the
>>> Submit button again, the error would go disappear, because the
>>> RedirectHelpForm bean is alerady populated in the class
>>> RedirectHelpAction, however not in the class RedirectAction.
>>> The code of RedirectAction is shown as below:
>>>
>>> /** @struts.action name="RedirectForm" path="/struts_redirect_portlet/input"
>>>  * attribute="redirectForm"
>>>  * scope="session"
>>>  * input="/portlet/struts_redirect_portlet/input.jsp"
>>>  *
>>>  * @struts.action-forward name="input"
>>> path="/portlet/struts_redirect_portlet/input.jsp" redirect="false"
>>>  * @struts.action-forward name="help"
>>> path="/portlet/struts_redirect_portlet/help.jsp" redirect="false"
>>>  */
>>> public class RedirectAction extends PortletAction {
>>>
>>>        public ActionForward execute(
>>>                        ActionMapping mapping, ActionForm form,
>>> HttpServletRequest req,
>>>                        HttpServletResponse res)
>>>                throws Exception {
>>>
>>>                RedirectForm redirectForm = (RedirectForm) form;
>>> //              req.setAttribute("redirectForm",  redirectForm);
>>>
>>>                String comment = redirectForm.getComment().trim();
>>>               if ( comment.length() > 0) {
>>>                  return mapping.findForward("help");
>>>                }
>>>
>>>                  return mapping.findForward("input");
>>>
>>>        }
>>>
>>>
>>>        public ActionForward render(
>>>                        ActionMapping mapping, ActionForm form,
>>> PortletConfig config,
>>>                        RenderRequest req, RenderResponse res)
>>>                throws Exception {
>>>
>>>                return mapping.findForward("input");
>>>        }
>>> }
>>>
>>> Can anyone tell me how to pre-setAttribute for an upcoming Form in an
>>> Action class?
>>> It sounds weried. but I couldn't find a way to get rid of the error.
>>>
>>> Thanks
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
>>> For additional commands, e-mail: user-h...@struts.apache.org
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
>> For additional commands, e-mail: user-h...@struts.apache.org
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
> For additional commands, e-mail: user-h...@struts.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org

Reply via email to