Struts2
provide Preparable interface, Any action class which implements Preparable
interface, overrides the prepare method.
public interface
Preparable {
/**
* This method is called to allow the
action to prepare itself.
*
* @throws Exception thrown if a system
level exception occurs.
*/
void prepare() throws Exception;
}
Prepare
interceptor calls prepare() on actions which implement Preparable.
"prepare()" method called before the actual execute method runs.
Following
example creates a registration form, with fields username,
password, mailId, country, hobbies. The data for the hobbies, country is
updated using the prepare method of the action class.
Step 1: Create new maven project “struts_tutorial”. Follow
first 3 steps from the following link to make the project setup.
Step 2: create struts.xml. Since Struts 2 requires
struts.xml to be present in classes folder. So create struts.xml file under the
WebContent/WEB-INF/classes folder. Eclipse does not create the
"classes" folder by default, so you need to do this yourself. To do
this, right click on the WEB-INF folder in the project explorer and select New
> Folder.
struts.xml
<!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="getRegistration" class="learn.struts.GetRegistrationForm"> <result name="success">/register.jsp</result> </action> </package> </struts>
Step 3: Create register.jsp with following data.
register.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>User Registration Form</title> <s:head /> </head> <body> <s:form name="registerform" action="registerUser"> <s:textfield name="username" label="User Name" required="true" /> <s:password name="password" label="Password" required="true" /> <s:textfield name="email" label="Email Id" required="true" /> <s:checkboxlist label="hobbies" list="hobbies" name="hobbies"> </s:checkboxlist> <s:select list="country" label="Country" name="country"></s:select> <s:submit /> </s:form> </body> </html>
Step 4: Create action class GetRegistrationForm.java,
inside the package “learn.struts”.
package learn.struts; import java.util.ArrayList; import java.util.List; import com.opensymphony.xwork2.Preparable; public class GetRegistrationForm implements Preparable { private List<String> hobbies; private List<String> country; public List<String> getCountry() { return country; } public List<String> getHobbies() { return hobbies; } public String execute() { return "success"; } @Override public void prepare() throws Exception { hobbies = new ArrayList<>(); hobbies.add("Mobiles"); hobbies.add("Game Consoles"); hobbies.add("Laptops"); hobbies.add("Portable Music Players"); country = new ArrayList<>(); country.add("India"); country.add("Nepal"); country.add("Japan"); country.add("Sri Lanka"); } }
Run the
Application and hit following URL.
You will get
following jsp page. Observe the jsp file, it contains the country and hobbies
data, which I set in prepare method of action class.
Complete
project structure looks like following.
No comments:
Post a Comment