Like I have said before, if I "manually" navigated to the
RedirectHellpForm page , then reload the first page (RedirectForm),
and press the Submit button from the RedirectForm, it can find the
"name" of RedirectHelpForm.
My questions is how can I setAttribute("RedirectHelpForm" ...) before
navigated to the RedirectHelpForm page??

thanks
Sam

On Thu, Jun 25, 2009 at 5:17 PM, Sam Wun<swun2...@gmail.com> wrote:
> I just tried your suggestion,
> it doesn't work.
> The page flow is:
> RedirectAction -> RedirectHelpAction -> RedirectStep3Action
>
> Here is the RedirectAction.java file:
>
> import org.apache.commons.logging.LogFactory;
>
> import javax.portlet.ActionRequest;
> import javax.portlet.ActionResponse;
> 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="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;
>
>                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");
>        }
> }
>
> Here is the RedirectHelpAction.java file:
>
> import javax.servlet.http.HttpServletResponse;
>
> import javax.portlet.ActionRequest;
> import javax.portlet.ActionResponse;
> 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.getSession().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 {
>
>                return mapping.findForward("help");
>        }
> }
>
>
> On Thu, Jun 25, 2009 at 3:47 PM, Nils-Helge Garli
> Hegvik<nil...@gmail.com> wrote:
>> 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
>>
>>
>

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

Reply via email to