Tech I Enjoy Logo

Custom Search




  Home >> Struts


Struts version 2.1.6  - Result Type as the Action chain with an example
I have sometimes felt that Action chaining is required if the business
requirement is to perform some generic action before forwarding request
to another page navigational action, like for example,
if certain service that is very generic in nature and should not be
bundled with all the View/UI/Page navigation Action class files, 
instead if thie service has to be a re-usable component and associated
action should be called first and then the Page forward should happen.
Then in this case, Struts Action chain Result type definition can be
very useful.

In this example, I shall try to show a very simple functionality,
that you might have already read in some other example in this site.

Like for example, a screen having two fields testHeader and testFooter. Both these text fields values are set by user and on submit for the form , a Action (in this case ExampleInitialAction) will be called. But surprisingly this Action class is not having these two fields/variables in it, but it just return the result name (that is "preview"), but in struts.xml configuration file, this result is of type "chain", and some of the param such as "namespace" and "actionName" takes the processing to another action that is "xslt-view" with namespace as "/sample-xslt". And the action class file name is "ExampleXSLTAction". this action receives values from those text fields "testHeader" and "testFooter" and returns either "preview" or "input" string value. Hence the output screen is shown with the help of appropriate XSLT file. Let us see struts.xml file as follows: struts.xml
<?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>
    <package name="initial" namespace="/sample"
                 extends="struts-default">
        <action name="test" class="sample.ExampleInitialAction" 
	                       method="preview">
        <result name="preview" type="chain">
	      <param name="namespace">/sample-xslt</param>
		  <param name="actionName">xslt-view</param>
		</result>
        </action>
    </package>
    <package name="xslt-example" namespace="/sample-xslt"
                 extends="struts-default">
        <action name="xslt-view" class="sample.ExampleXSLTAction" 
	                       method="preview">
                <result name="preview" type="xslt">
		  <param name="stylesheetLocation">
		    /sources/test.xslt
		  </param>
		</result>
                <result name="input">/index.jsp</result>
        </action>
    </package>
</struts>
As you can go through the above struts.xml file, we have here two Action class files, as follows: sample.ExampleInitialAction.java
package sample;

public class ExampleInitialAction
{
    public String preview() throws Exception{
        return "preview";
    }
}
And sample.ExampleXSLTAction.java
package sample;

public class ExampleXSLTAction {
	private String testHeader;
	private String testFooter;
	public void setTestHeader(String arg) {
		testHeader = arg;
	}
	public String getTestHeader(){
		return testHeader;
	}
	public void setTestFooter(String arg) {
		testFooter = arg;
	}
	public String getTestFooter(){
		return testFooter;
	}
    public String preview() throws Exception {
		if((testHeader != null && testHeader.length() >0) &&
			(testFooter != null && testFooter.length() <0))
            return "preview";
		else
            return "input";
	}
}
We have a XSLT file as follows: /sources/test.xslt
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
                version="1.0">
<xsl:output method="html"/>
<xsl:template match="result">
<html>
<body>
      <h4><xsl:value-of select="testHeader"/></h4>
      <br/>
      <xsl:value-of select="testFooter"/> 
</body>
</html>
</xsl:template>
</xsl:stylesheet>
and the index.jsp is very straight forward: index.jsp
<%@ taglib uri="/struts-tags" prefix="struts2"%>
<html>
<head>
</head>
<body>
<struts2:form method="post" action="test" namespace="/sample">
<table>
<tr><td><struts2:textfield key="testHeader" label="Enter Header :"/>
    </td></tr>
<tr><td><struts2:textfield key="testFooter" label="Enter Footer :"/>
    </td></tr>
<tr><td colspan="2"><struts2:submit value="Register"/></td></tr>
</table>
</struts2:form>
</body>
</html>
Web Application Descriptor file is same as any other example from this site: web.xml
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
  <filter>
  <filter-name>sample-filter</filter-name>
  <filter-class> 
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  </filter-class>
  </filter>
  <filter-mapping>
    <filter-name>sample-filter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>
Anybody having any technical difficulties in setting up and running this example, please let me know by commenting in this page using the form below. Thanks for reading this. If you like to share your comment/suggestions/feedback relating to this Page, you can do so by droping us an email at usingframeworks @ gmail . com with the subject line mentioning URL for this Page (i.e, /struts-result-chain.php) or use this LINK. As per this website's privacy policy, we never disclose your email id, though we shall post your comments/suggestions/feedback with your name (optional) and date on this Page. If you don't want your comments/suggestions/feedback to be shared in this Page, please mention so in your email to us. Thank you very much..... If anything missed out , please let me know at techienjoy at yahoo . com
Struts Validation Example :
Example using Validation with Struts 2 and 
code explained.
Apache Struts 2 Tiles and I18N Example :
Example Steps of using Struts 2 With Tiles
and I18N code explained.
Apache Struts 2 Tags Example :
Example Steps of using Struts 2 Tags
and code explained.
Apache Struts 2 Validation Example :
Validation Example Steps of using Struts 2
and Example code explained.
Struts 2 Plugin Example :
Example using Struts 2 Plugin
Struts 2 Tiles and I18N Example :
Example using Tiles and I18N with Struts 2 and 
code explained.
Struts 2 with JSF Example :
Example using JSF with Struts 2 and 
code explained.
Apache Struts 2 Custom Validator :
Example Steps of using Struts 2 with Custom Validator
and code explained.
Apache Struts 2 and XSLT With Example :
XSLT Example using Struts 2 and Example 
code explained.
Apache Struts Validation with Example :
Example of Validation using Struts and 
code explained.
Apache Struts 2 Tags Example :
Example of Struts 2 Tags and code explained.
Apache Struts 2 upload Example :
Uploading Example Steps of using Struts 2
and Example code explained.
Apache Struts with DOJO Example Part-2 :
Example of DOJO Toolkit with Struts and 
code explained.
Apache Struts 2 Radio Tag Example :
Example Steps of using Struts 2 Radio Tags
and code explained.
Apache Struts with DOJO Example Part-4 :
Example of DOJO Toolkit with Struts and 
code explained.
Struts 2 Result Chain Example :
Example using Result Chain with Struts 2 and 
code explained.
Apache Struts 2 Validation With Example :
Validation Example using Struts 2
and Example code explained.
Apache Struts with DOJO Example Part-1 :
Example of DOJO Toolkit with Struts and 
code explained.
List of Struts Example :
Examples List using Struts 2 and 
code explained.
Apache Struts 2 Result PlainText Example :
Example Steps of using Struts 2 PlainText Result
and code explained.
Apache Struts 2 PDF Result :
Example Steps of using Struts 2 with PDF Result
and code explained.
Apache Struts Date Validation with Example :
Example of Date Validation using Struts and 
code explained.
Apache Struts 2 Example Steps :
Example Steps of using Struts 2 and code explained.
Apache Struts with DOJO Example Part-3 :
Example of DOJO Toolkit with Struts and 
code explained.
Apache Struts 2 Validation With Expression :
Validation with Expression using Struts 2
and Example code explained.


References :
Tags: Struts 1 Struts2 plugin
Tags: struts jsf integrate
Tags: struts result chain
Tags: struts tiles i18n
Tags: Struts validation struggle
Tags: Struts
Tags: struts1 date validation
Tags: struts1 struts2 validation
Tags: struts2 dojo 1
Tags: struts2 dojo 2
Tags: struts2 dojo 3
Tags: struts2 dojo 4
Tags: Struts2 example steps Tag usage
Tags: Struts2 example steps
Tags: struts2 own validator
Tags: struts2 pdf result
Tags: struts2 radio tag example
Tags: struts2 result plaintext
Tags: struts2 tags example
Tags: struts2 tiles i18n
Tags: struts2 upload example
Tags: struts2 validation 1
Tags: struts2 validation expression
Tags: struts2 validation
Tags: struts2 xslt article



DISCLAIMER :
The content provided in this page is not warranted and/or guaranteed by techienjoy.com. 
techienjoy.com is not liable for any negative consequences that may result/arise from 
implementing directly/indirectly any information covered in these pages/articles/tutorials.

All contents of this site is/are written and provided on an "AS IS" basis,
without WARRANTIES or conditions of any kind, either express or implied, including, without
limitation, merchantability, or fitness for a particular purpose. You are solely responsible
for determining the appropriateness of using or refering this and assume any risks associated
with this.

In spite of all precautions taken to avoid any typo in these pages, there might be some 
issues like grammatical mistakes and typos being observed in these pages, techienjoy.com
extends sincerest apologies to all our visitors for the same.



Android Examples || Android Examples

© Copyright 2010-2012, TECHIENJOY, All Rights Reserved.      Privacy Policy     Disclaimer & Terms & Conditions