Home >> Struts
Using XSL file to render output HTML while using Struts 2.1.6 Framework
There is a specific Result type as XSLTResult, that is defined in the
default Struts XML file, so is available to use in any Struts 2
framework based application.
In this example I shall be showing one out of several ways by which
one may use a XSL file for rendering HTML output/screen from a
Struts2 based Action/POJO class.
In this example we have a struts.xml file, a POJO, a index.jsp file,
a XSL file, these are placed in appropriate places inside the
web application packaging, for this example it is shown as follows:
/*/WEB-INF/classes/struts.xml
/*/WEB-INF/classes/sample/ExampleXSLTAction.java
/index.jsp
/sources/test.xslt
|
What I am doing here is to show a screen to enter two values, such as
header and footer. These two text fields are mapped to the two
variables in POJO, "ExampleXSLTAction", and then forwarding to a preview
result having type as "xslt" and style sheet location as the xslt file
located in the sources folder.
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="xslt-example" namespace="/sample"
extends="struts-default">
<action name="test" 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>
|
When the URL for accessing this example web application as,
http://localhost:8080/struts2sample
Then the index.jsp will be showing the user UI screen as follows:
And the second screen one clicking submit button.
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";
}
}
|
This POJO class file does only checking of the input values in
these two text fields, testHeader and testFooter.
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>
|
This XSLT file, takes values from the ExampleXSLTAction object
and displays on screen as shown in this image

And following image shows a very simple way of putting various
major parts/files of this example and the way fields/attributes
are used/referred in each of these files.
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>
|
This way I could able to pass dynamic values from Action class/POJO
to the XSLT processor for displaying output in HTML format.
Any comments , please write those using below form.
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,
/struts2-xslt-article.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