How to use a JavaBean class as a property in struts 2 action class.
In this tutorial we will learn how to use a JavaBean class as a property in struts 2 action.
Consider a scenario, in which you have written an action class, which in turn has a JavaBean class as its property as shown below.
** UPDATE: Struts 2 Complete tutorial now available here.
Action class
HelloAction.java
package com.simplecode.action; import com.opensymphony.xwork2.Action; import com.simplecode.bo.User; public class HelloAction implements Action { private User user; public User getUser() { return user; } public void setUser(User user) { this.user = user; } public String execute() { if (getUser().getUserName().isEmpty()) return ERROR; else return SUCCESS; } }
Transferring the JavaBeans property values to Action class
In Struts 2 transferring of data to the Java bean object is automatically done by the params interceptor, all we have to do is to create a JavaBeans object and its corresponding getter and setter methods in the action class.
Retrieving the JavaBeans property from action class to Jsp
To refer the attributes of User class, we need to first get the User object and then access its properties. For example to access the User’s, userName attribute in the Action class, the following syntax is used.
getUser().getUserName();
JavaBean class
User.java
package com.simplecode.bo; public class User { private String userName; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } }
JSP
In jsp page the user attributes cannot be directly referenced. Since the attributes we refer in the jsp page belongs to the User object (JavaBean object) we need to go one level deeper to reference the attributes. To refer the userName attribute of User class, the value of the name attribute in the s:property tag should be
"user.userName"
login.jsp
<%@taglib uri="/struts-tags" prefix="s"%>Login Struts 2 JavaBeans as property
success.jsp
<%@ taglib prefix="s" uri="/struts-tags"%>Welcome Page Welcome,
error.jsp
<%@ taglib prefix="s" uri="/struts-tags"%>Error Page Login failed! Please enter a valid user name
Demo
http://localhost:8089/JavaBean/
On entering the details and clicking the Submit button the following page will be dispalyed.
In struts 2 there is a concept call Model objects, using which we can refer to the JavaBean objects attributes directly, instead of doing a deeper reference as shown in this example above. In our next article we will learn about struts 2 Model Objects which simplifies the amount of code written above via ModelDriven interface
|