Struts 2 - The bean tag

Advertisements


The bean tag is a combination of the set and push tags, it allows you create a new instance of an object and then set the values of the variables. It then makes the bean available in the valuestack, so that it can be used in the JSP page.

The Bean tag requires a java bean to work with. So, the standard java bean laws should be followed. Which is, the bean should have a no argument constructor. All properties that you want to expose and use should have the getter and setter methods. For the purpose of this exercise, let us use the following Counter class that comes in the struts util package. The Counter class is a bean that can be used to keep track of a counter.

So let us keep all the files unchanged and modify HelloWorld.jsp file.

Create action class:

package com.tutorialspoint.struts2;

public class HelloWorldAction{
   private String name;

   public String execute() throws Exception {
      return "success";
   }
   
   public String getName() {
      return name;
   }

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

Create views

Let us have HelloWorld.jsp with the following content:

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Hello World</title>
</head>
<body>

<s:bean name="org.apache.struts2.util.Counter" var="counter">
   <s:param name="first" value="20"/>
   <s:param name="last" value="25" />
</s:bean>
<ul>
   <s:iterator value="#counter">
      <li><s:property /></li>
   </s:iterator>
</ul>
	
</body>
</html>

Next let us have employees.jsp with the following content:

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>Employees</title>
</head>
<body>
   <p>An example of the include tag: </p>
   <s:include value="HelloWorld.jsp"/>
</body>
</html>

Configuration Files

Your struts.xml should look like:

<?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.devMode" value="true" />
   <package name="helloworld" extends="struts-default">

   <action name="hello" 
      class="com.tutorialspoint.struts2.HelloWorldAction" 
      method="execute">
      <result name="success">/HelloWorld.jsp</result>
   </action>
   <action name="employee" 
      class="com.tutorialspoint.struts2.Employee" 
      method="execute">
      <result name="success">/employee.jsp</result>
   </action>

   </package>
</struts>

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>Struts 2</display-name>
   <welcome-file-list>
      <welcome-file>index.jsp</welcome-file>
   </welcome-file-list>
   <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>
</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/HelloWorldStruts2/hello.action. This will give you following screen:

Struts bean tag

In this example, we are instantiating a new instance of the org.apache.struts2.util.Counter bean. We then set the first property to 20 and the last property to 25. This means that the counter will have the values 20,21,22,23,24 and 25. We give the bean a name "counter". The struts bean tag instantiates the bean and puts it in the value stack. We can now use the iterator to go through the Counter bean a nd print out the value of the counter.



Advertisements
Advertisements