Dear all,

I have a problem when I click a submit button of a page, it doesn't go
straight to the next desired page.
Here is my little project:
Firstly, I want to show you how it supposed to flow:
Input page -> Help page

But the problem is it does go to the Help page when I click the submit
button on the Input page.

Here are the source files:

--- input.jsp:
============================================
 # cat input.jsp
<%@ include file="/html/portlet/struts_redirect_portlet/init.jsp" %>

<p align=centre>
        Hello the INPUT page.....
</p>
<bean:define id="comment" name="RedirectForm" property="comment"
type="java.lang.String" />

<logic:messagesPresent>
        <span class="es-error">
        <bean:message key="error.comment.invalid"/>
        </span>
</logic:messagesPresent>

<p align=centre>
<html:form action="/struts_redirect_portlet/input" method="post"
focus="comment">

<table class="stats">
<tr>
  <th><bean:message key="form.title.comment"/></th>
  <th><html:text name="RedirectForm" property="comment" size="50" /></th>
</tr>
</table>
</p>

<p align=left>
   <html:submit><bean:message key="button.submit"/></html:submit>
   </html:form>
</p>

--- help.jsp:
=============================================

 # cat help.jsp
<%@ include file="/html/portlet/struts_redirect_portlet/init.jsp" %>

<p align=centre>
        Hello the HelP FORM ??.....
</p>
<bean:define id="name" name="RedirectHelpForm" property="name"
type="java.lang.String" />

<logic:messagesPresent>
        <span class="es-error">
        <bean:message key="error.name.invalid"/>
        </span>
</logic:messagesPresent>

<p align=centre>
<html:form action="/struts_redirect_portlet/help" method="post" focus="name">

<table class="stats">
<tr>
  <th><bean:message key="form.title.name"/></th>
  <th><html:text name="RedirectHelpForm" property="name" size="50" /></th>
</tr>
</table>
</p>

<p align=left>
   <html:submit><bean:message key="button.submit"/></html:submit>
   </html:form>
</p>

-- RedirectAction.java:
=================================
package com.ip6networks.struts_redirect.portlet;

import com.ip6networks.struts_redirect.portlet.RedirectForm;

import com.liferay.portal.struts.PortletAction;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
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"
 * scope="session"
 * input="/portlet/struts_redirect_portlet/input.jsp"
 *
 * @struts.action-forward name="input"
path="/portlet/struts_redirect_portlet/input.jsp" redirect="true"
 * @struts.action-forward name="help"
path="/portlet/struts_redirect_portlet/help.jsp" redirect="true"
 */
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");
        }
}

--- RedirectForm.java
=================================
# cat RedirectForm.java
package com.ip6networks.struts_redirect.portlet;

import org.apache.struts.validator.ValidatorForm;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;

/**
 * @struts.form name="RedirectForm"
 */
public class RedirectForm extends ValidatorForm {
    private String comment="";

    public String getComment() {return this.comment;}

        /**
     * @struts.validator type="required" msgkey="error.comment.required"
        */
    public void setComment(String c) {this.comment = c;}

    public void reset(ActionMapping mapping, HttpServletRequest req) {
        this.comment = "";
    }

    public ActionErrors validate(ActionMapping mapping,
HttpServletRequest req) {

        ActionErrors errors = new ActionErrors();
        try{
          if (this.comment == null || this.comment.length() < 1)
           {
                errors.add("comment", new
ActionMessage("error.comment.required"));
           }
        }
        catch(NullPointerException npe){}

        return errors;
    }

}

--- ReidrectHelpAction.java
=====================================
# cat RedirectHelpAction.java
package com.ip6networks.struts_redirect.portlet;

import com.liferay.portal.struts.PortletAction;

import javax.servlet.http.HttpServletRequest;
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"
 * scope="session"
 * input="/portlet/struts_redirect_portlet/help.jsp"
 *
 * @struts.action-forward name="help"
path="/portlet/struts_redirect_portlet/help.jsp" redirect="true"
 */

public class RedirectHelpAction extends PortletAction {

        public ActionForward execute(
                        ActionMapping mapping, ActionForm form,
HttpServletRequest req,
                        HttpServletResponse res)
                throws Exception {

               return mapping.findForward("help");
        }

        public ActionForward render(
                        ActionMapping mapping, ActionForm form,
PortletConfig config,
                        RenderRequest req, RenderResponse res)
                throws Exception {

                return mapping.findForward("help");
        }
}

--- RedirectHelpForm.java
=======================================
# cat RedirectHelpForm.java
package com.ip6networks.struts_redirect.portlet;

import org.apache.struts.validator.ValidatorForm;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;

/**
 * @struts.form name="RedirectHelpForm"
 */
public class RedirectHelpForm extends ValidatorForm {
    private String name="";

    public String getName() {return this.name;}

        /**
     * @struts.validator type="required" msgkey="error.name.required"
        */
    public void setName(String c) {this.name = c;}

    public void reset(ActionMapping mapping, HttpServletRequest req) {
        this.name = "";
    }

    public ActionErrors validate(ActionMapping mapping,
HttpServletRequest req) {

        ActionErrors errors = new ActionErrors();
        try{
          if (this.name == null || this.name.length() < 1)
           {
                errors.add("name", new ActionMessage("error.name.required"));
           }
        }
        catch(NullPointerException npe){}

        return errors;
    }

}

--- struts-config.xml:
====================================
  <action-mappings>
    <action
      path="/struts_redirect_portlet/input"
      type="com.ip6networks.struts_redirect.portlet.RedirectAction"
      name="RedirectForm"
      scope="session"
      input="/portlet/struts_redirect_portlet/input.jsp"
      unknown="false"
      validate="true"
    >
      <forward
        name="input"
        path="/portlet/struts_redirect_portlet/input.jsp"
        redirect="true"
      />
      <forward
        name="help"
        path="/portlet/struts_redirect_portlet/help.jsp"
        redirect="true"
      />
    </action>
    <action
      path="/struts_redirect_portlet/help"
      type="com.ip6networks.struts_redirect.portlet.RedirectHelpAction"
      name="RedirectHelpForm"
      scope="session"
      input="/portlet/struts_redirect_portlet/help.jsp"
      unknown="false"
      validate="true"
    >
      <forward
        name="help"
        path="/portlet/struts_redirect_portlet/help.jsp"
        redirect="true"
      />
    </action>

--- validation.xml:
===============================
      <form name="RedirectHelpForm">
              <field property="name"
                     depends="required">
                  <msg
                    name="required"
                    key="error.name.required"/>

                  <arg0 key="RedirectHelpForm.name"/>
              </field>
      </form>
      <form name="RedirectForm">
              <field property="comment"
                     depends="required">
                  <msg
                    name="required"
                    key="error.comment.required"/>

                  <arg0 key="RedirectForm.comment"/>
              </field>
      </form>

That s all.
I don;t know else I have to show here.

Please let me. I am stlll newbie with struts.
Your help is certainly very much appreciated.

Thanks

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

Reply via email to