Pages Navigation Menu

Coding is much easier than you think

Struts 2 Push Tag Example

Struts 2 Push Tag Example

 
Struts 2 “push” tag is used to push a value into the ValueStack. The value we pushed using push tag will be on top of the ValueStack, so it can be easily referenced using the first-level OGNL expression instead of a deeper reference. The following code show how to do this.
 
** UPDATE: Struts 2 Complete tutorial now available here.
 

dwd2
Download It – PushTag

 
 1. Action
package com.simplecode.action;

import com.simplecode.util.AuthorBean;

//PushTag Action class
public class BookInfoAction {

	private AuthorBean authorBean;

	public String populate() {
	  authorBean = new AuthorBean
             ("Mohammed masjid", "Akuland Nz","8051 Micro Controller");
		return "populate";
	}

	public String execute() {
		return "success";
	}

	public AuthorBean getAuthorBean() {
		return authorBean;
	}

	public void setAuthorBean(AuthorBean authorBean) {
		this.authorBean = authorBean;
	}

}

 
 2. Bean
 
A simple AuthorBean class, later will push it into the stack for easy access.

package com.simplecode.util;

public class AuthorBean {

	private String name;
	private String university;
	private String book;

	public AuthorBean(String name, String university, String book) {
		this.name = name;
		this.university = university;
		this.book = book;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getUniversity() {
		return university;
	}

	public void setUniversity(String university) {
		this.university = university;
	}

	public String getBook() {
		return book;
	}

	public void setBook(String book) {
		this.book = book;
	}
	
}

 
 3. Push tag example
 
It shows the use of “push” tag.


<%@taglib uri="/struts-tags" prefix="s"%>
<html>
<head>
<title>Book Details</title>
</head>
<body>
	<p>Author name property can be accessed in two ways:</p>
	
	<br /> (Method 1 - Normal method)
	<br /> <b>Author Name:</b>
	<s:property value="authorBean.name" />
	<br /> <b> University: </b>
	<s:property value="authorBean.university" />
	<br/><b>Book Title :</b>
	<s:property value="authorBean.book" />
	
	
	<br /> <br /> (Method 2-push tag)
	
	<s:push value="authorBean">
	   <b>Author Name:</b>
	   <s:property value="name" />
	   <b> University: </b>
	   <s:property value="university" />
	   <b>Book Title :</b>
	   <s:property value="book" />
	</s:push>

</body>
</html>

 
 How it work?
 
Normally, if you want to get the bean’s property, you may reference it like

<s:property value="authorBean.name" />

With “push” tag, you can push the “authorBean” to the top of the stack, and access the property directly

<s:property value="name" />

Both are returned the same result, but with different access mechanism only.

 
 4. Struts.xml
Link it
 

<?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="default" extends="struts-default">
		<action name="*BookAction" method="{1}"
			class="com.simplecode.action.BookInfoAction">
			<result name="populate">/bookDetails.jsp</result>
		</action>
	</package>
</struts>

 
 5. Demo
 
http://localhost:8089/PushTag/populateBookAction.action
 
 Run it
 
pushTag
 

About Mohaideen Jamil