Working with DynaActionForms in Validator Framework

Working with DynaActionForms in Validator Framework

Previous Home Next

 

Working with DynaActionForms in Validator Framework is quite easy.You can used DynaValidatorForm class instead of the DynaActionForm class.The validator framework and the DynaForms have a special relationship.DynaForms typically rely on the validator framework to perform validation.

 Using a DynaActionForm instead of a custom subclass of ActionForm is relatively straightforward.

You need to make changes in two places:-

1. Change in struts-config.xml:-

change your <form-bean> to be an org.apache.struts.action.Dyna ActionForm instead of some subclass of ActionForm.

<form-bean name="loginForm" type="org.apache.struts.action.DynaActionForm" >
<form-property name="userName" type="java.lang.String"/>
<form-property name="password" type="java.lang.String" />
</form-bean>

2. Change in your Action subclass that uses your form bean :-
  
        a. import org.apache.struts.action.DynaActionForm
        b. downcast the ActionForm parameter in execute() to a DynaActionForm
        c. access the form fields with get(field) rather than getField()


Directory Structure of DynaActionFormExample in Struts 1.3 Using MyEclipse IDE




index.jsp

<%@taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<html>
<head>
<title>Struts DynaActionForm example</title>
</head>
<body>
<h3>Struts DynaActionForm example</h3>
<html:form action="/myaction">
<bean:message key="label.name"/>:
<html:text property="name"/><br/>
<bean:message key="label.password"/>:
<html:password property="password"/><br/>
<br/>
<html:submit><bean:message key="label.submit"/></html:submit>
<html:reset><bean:message key="label.reset"/></html:reset>
</html:form>
</body>
</html>

web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >
 
<web-app>
  <display-name>Maven Struts Examples</display-name> 
  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>
        org.apache.struts.action.ActionServlet
    </servlet-class>
    <init-param>
        <param-name>config</param-name>
        <param-value>
         /WEB-INF/struts-config.xml
        </param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet> 
  <servlet-mapping>
       <servlet-name>action</servlet-name>
       <url-pattern>*.do</url-pattern>
  </servlet-mapping> 
</web-app>

struts-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC 
"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
"http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config>
  <form-beans>
    <form-bean name="dynaForm" type="org.apache.struts.action.DynaActionForm">
    <form-property name="name" type="java.lang.String"/>
    <form-property name="password" type="java.lang.String"/>
    </form-bean>
  </form-beans>
  <global-exceptions />
  <global-forwards />
  <action-mappings >
    <action
      attribute="dynaForm"
      input="/index.jsp"
      name="dynaForm"
      path="/myaction"
      scope="request"
      type="org.r4r.struts.DynaAction"
      cancellable="true" >
      <forward name="success" path="/success.jsp"></forward>
</action>
</action-mappings>
  <message-resources parameter="org.r4r.struts.ApplicationResources" />
</struts-config>

DynaAction.java

package org.r4r.struts;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class DynaAction extends Action {
	public ActionForward execute(ActionMapping mapping,ActionForm form,
	HttpServletRequest request,HttpServletResponse response) 
	throws Exception{
	return mapping.findForward("success");
	}
}

ApplicationResources.properties

#label message
label.name = User Name 
label.password = Password
label.submit = Submit
label.reset = Reset

success.jsp

<%@taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<html>
<head>
<title>Struts DynaActionForm example</title>
</head>
<body>
<h3>Struts DynaActionForm Example</h3>
<h4>Welcome , <bean:write name="dynaForm" property="name" /></h4>
<h4>Your password , <bean:write name="dynaForm" property="password" /></h4>
</body>
</html>

Output





Previous Home Next