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

Reply via email to