Home Struts Struts2 Actions Struts 2 Redirect Action
Questions:Ask|Latest


 
 

Share on Google+Share on Google+

Struts 2 Redirect Action

Advertisement
In this section, you will get familiar with struts 2 Redirect action and learn to use it in the struts 2 application.

Struts 2 Redirect Action

     

In this section, you will get familiar with struts 2 Redirect action and learn to use it in the struts 2 application.

Redirect After Post: This post pattern is supported by Struts 2. This is a common pattern in web application. In which an action is redirected to another action. This is a common use to redirect action to display a page.

Redirect Action Result: This redirect pattern is supported by Struts 2. The ActionMapper provided by the ActionMapperFactory is used to redirect the browser to a URL that invokes the specified action. You can see a simple implementation of this in the following struts 2 application. 

Redirects Dynamic Parameters: The action-redirect result takes following parameters:

  • actionName
  • namespace
  • method
  • encode
  • parse
  • location
  • prependServletContext

Follow the steps to develop a Redirect Action example:

Step 1: Create the struts.xml file and add the following xml snippet in the struts.xml file.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
  "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
  "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

  <!-- Rose India Struts 2 Tutorials -->
  <constant name="struts.enable.DynamicMethodInvocation" value="false" />
  <constant name="struts.devMode" value="true" />
<include file="struts-default.xml"/>
  <package name="roseindia" namespace="/roseindia" extends="struts-default">

  
  <!-- Redirect Action -->

 <action name="showAjaxLoginCancelForm">
  <result>/pages/ajaxloginCancel.jsp</result>
 </action>

  <action name="ajaxloginCancel" class="net.roseindia.Login">
  <result  name="input">/pages/ajaxloginCancel.jsp</result>
  <result  name="error">/pages/ajaxloginCancel.jsp</result>
  <result name="cancel" type="redirect">/pages/ajaxloginCancel.jsp</result>
  <result>/pages/ajaxloginsuccess.jsp</result>
  </action>
  
 <!-- Add actions here -->
  </package>


  <!-- Add packages here -->

</struts>

Step 2 : Create an input form.

ajaxloginCancel.jsp

<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
  <head>
  <s:head theme="ajax" debug="true"/>
  </head>
  <body>
  <s:div id="loginDiv" theme="ajax">
  <div style="width: 300px;border-style: solid">
  <s:form action="ajaxloginCancel"  validate="true">
  <tr>
  <td colspan="2">
  Login
  </td>
  </tr>
  <tr>
  <td colspan="2">
  <s:actionerror />
  <s:fielderror />
  </td>  
  <s:textfield name="username" label="Login name"/>
  <s:password name="password" label="Password"/>
  <s:submit value="Submit" theme="ajax" targets="loginDiv" notifyTopics="/ajaxloginCancel"/>
  <s:submit action="showAjaxLoginCancelForm" value="Cancel" onclick="form.onsubmit=null"/>
  
  </s:form>
  </div>
  </s:div>
  </body>
</html>

Step 3 : Create an Action class.

Login.java

package net.roseindia;
import com.opensymphony.xwork2.ActionSupport;
import java.util.Date;


/**
 * <p> Validate a user login. </p>
 */
public class Login extends ActionSupport {


  public String execute() throws Exception {
  if(!getUsername().equals("Admin") || !getPassword().equals("Admin")){
  addActionError("Invalid user name or password! Please try again!");
  return ERROR;
  }
  if(getUsername().equals("Admin") || getPassword().equals("Admin")){
  return SUCCESS;
  }else{
  return NONE;
  }
  }


  // ---- Username property ----

  /**
 * <p>Field to store User username.</p>
 * <p/>
 */
  private String username = null;


  /**
 * <p>Provide User username.</p>
 *
 * @return Returns the User username.
 */
  public String getUsername() {
  return username;
  }

  /**
 * <p>Store new User username</p>
 *
 * @param value The username to set.
 */
  public void setUsername(String value) {
  username = value;
  }

  // ---- Username property ----

  /**
 * <p>Field to store User password.</p>
 * <p/>
 */
  private String password = null;


  /**
 * <p>Provide User password.</p>
 *
 * @return Returns the User password.
 */
  public String getPassword() {
  return password;
  }

  /**
 * <p>Store new User password</p>
 *
 * @param value The password to set.
 */
  public void setPassword(String value) {
  password = value;
  }

}

Step 4 : Create the appropriate validator as shown: 

The validation.xml format is either <ActionClassName>-validation.xml or <ActionClassName>-<ActionAliasName>-validation.xml.

Login-validation.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC 
  "-//OpenSymphony Group//XWork Validator 1.0.2//EN" 
  "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
  
<validators>
  <field name="username">
  <field-validator type="requiredstring">
  <param name="trim">true</param>
  <message>Login name is required</message>
  </field-validator>
  </field>
  <field name="password">
  <field-validator type="requiredstring">
  <param name="trim">true</param>
  <message>Password is required</message>
  </field-validator>
  </field>
</validators>

When entered the correct user name and password then the user gets the ajaxloginsuccess.jsp page displaying the entered text

ajaxloginsuccess.jsp

<html>
  <head>
  <title>Login Success</title>
  </head>
  <body>
  <p align="center"><font color="#000080" size="5"> Login Successful !</font></p>
  <h1> Welcome to <%=request.getParameter("username")%>  </h1>
  </body>
</html>

Output:

When this application executes you get the following:

When you don't fill any field and click "Submit" button, you get:

If you click the "Cancel" button then redirect action executes and provides:

Advertisements

Liked it!  Share this Tutorial


Follow us on Twitter, or add us on Facebook or Google Plus to keep you updated with the recent trends of Java and other open source platforms.

Posted on: May 24, 2009

Ask Questions?    Discuss: Struts 2 Redirect Action   View All Comments

Post your Comment


Your Name (*) :
Your Email :
Subject (*):
Your Comment (*):
  Reload Image
 
 
Comments
Thanh Tung
April 12, 2011
Not clearly

I'm is newbie struts so your tutorial seem very simple, i tried in so much example in the other website but can't running and when i read tutorial, it not clearly than that. You do not put screen short hierachy folder. Sorry for english
Arun
December 19, 2011
Location for validation file

Hi... Location for Login-validation.xml file is not specified. I think it should be in the same package as the action class which is using this file. Please tell what are other locations where I can keep this file.
DMCA.com