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