The struts include tag is very similar to the jsp include tag and it is rarely used. We have seen how to include the output of a struts action into a jsp using the <s:action> tags. The <s:include> tag is slightly different. It allows you to include the output of a jsp, servlet or any other resource (something other than a struts action) into a jsp. Behind the scenes it is exactly similar to the <jsp:include>, but it allows you to pass parameters to the included file and it is also part of Struts framework.
Add the following code snippet into 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>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="false" />
<constant name="struts.custom.i18n.resources" value="myapp" />
<package name="default" extends="struts-default" namespace="/">
<action name="includetag" class="com.dineshonjava.struts2.action.DataTagAction">
<result name="success">/success.jsp</result>
</action>
</package>
</struts>
Create an action class as shown below:
package com.dineshonjava.struts2.action;
import com.opensymphony.xwork2.ActionSupport;
/**
* @author Dinesh Rajput
*
*/
public class DataTagAction extends ActionSupport {
private static final long serialVersionUID = -7744420104547018874L;
private String userName;
public String execute() {
return SUCCESS;
}
public String sayHello() {
return SUCCESS;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
Create a View.
Let us have index.jsp to demonstrate the use of the generator tag:
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>Action Data Tag Struts2 | dineshonjava.com</title>
</head>
<body>
<h2>Generator Control Tag in Struts2</h2>
<h3>The User Name:</h3>
<s:generator val="%{'Dinesh,Sweety,Anamika,
Aadesh,Vinesh,Ankit,Honey '}" count="7"
separator=",">
<s:iterator>
<s:property /><br/>
</s:iterator>
</s:generator>
</body>
</html>
Next let us have success.jsp with the following content:
<%@ page contentType="text/html; charset=UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <html> <head> <title>Action Data Tag Struts2 | dineshonjava.com</title> </head> <body> <h2>An example of the include tag: </h2> <s:include value="index.jsp"/> </body> </html>
Your web.xml should look like:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>Struts2DataTag</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
Right click on the project name and click Export > WAR File to create a War file. Then deploy this WAR in the Tomcat’s webapps directory. Finally, start Tomcat server and try to access
URL http://localhost:8080/doj/includetag.
This will give you following screen:
Download SourceCode
IncludeDataTagExample.zip
Strategy Design Patterns We can easily create a strategy design pattern using lambda. To implement…
Decorator Pattern A decorator pattern allows a user to add new functionality to an existing…
Delegating pattern In software engineering, the delegation pattern is an object-oriented design pattern that allows…
Technology has emerged a lot in the last decade, and now we have artificial intelligence;…
Managing a database is becoming increasingly complex now due to the vast amount of data…
Overview In this article, we will explore Spring Scheduler how we could use it by…