<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<html:form>
<html:form action="/saveEmp" method="post">
<html:submit property="step">
<bean:message key="button.activate"/>
</html:submit>
<html:submit property="step">
<bean:message key="button.delete"/>
</html:submit>
<html:submit property="step">
<bean:message key="button.deactivate"/>
</html:submit>
</html:form>
|
//No need method name declaration in JSP . Button name from resource bundle.
Step 2. In the the Resource Bundle. //Here you can add localization.
button.activate=Activate
button.delete=Delete
button.deactivate=DeActivate
|
Step 3. Adding ActionForm Entry in
struts-config.xml
Add the following entry in the
struts-config.xml file.
<form-bean
name="EmpForm"
type="com.techfaq.form.EmpForm">
</form-bean> |
Step 4. Add action mapping in the struts-config.xml file:
Add the following action mapping in the
struts-config.xml file:
<action path="/empaction"
type="com.techfaq.action.EmpAction"
name="EmpForm"
scope="request"
validate="true"
parameter="step"
input="/jsp/empform.jsp">
<forward name="delete-success"
path="/jsp/deletesuccess.jsp"/>
<forward name="activate-success"
path="/jsp/activatesuccess.jsp"/>
<forward name="deactivate-success"
path="/jsp/deactivatesuccess.jsp"/>
</action> |
Step 5. In the Action class.
Implement a method named getKeyMethodMap() in the subclass of the
LookupDispatchAction. The method returns a java.util.Map. The
keys used in the Map should be also used as keys in Message Resource
Bundle.
public class EmpAction extends LookupDispatchAction {
public Map getKeyMethodMap()
{
Map map = new HashMap();
map.put("button.activate", "activate");
map.put("button.delete", "delete");
map.put("button.deactivate", "deactivate");
}
public ActionForward activate(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception
{
//your logic
mapping.findForward("activate-success");
}
public ActionForward delete(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception
{
//your logic
mapping.findForward("delete-success");
}
public ActionForward deactivate(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception
{
//your logic
mapping.findForward("deactivate-success");
}
}
|
Step 6. In the EmpForm
public class EmpForm extends ActionForm {
int empId;
String firstName;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public int getEmpId() {
return empId;
}
public void setEmpId(int empId) {
this.empId = empId;
}
}
|
Now in the browser type http://localhost:8080/jsp/empdetails.jsp
for every form submission, LookupDispatchAction does the
reverse lookup on the resource bundle to get the key and then gets the method
whose name is associated with the key from
getKeyMethodmap().
Flow of LookupDispatchAction:
a) Form the button name "Delete" get the key "button.delete" fro resource bundle.
b) then in the Map getKeyMethodMap() find the value associated with the key "button.delete".
c) value from the Map is "delete" . then call delete() method of the same action class.