5.7. Automatically Creating ActionForms
Problem
You want to create a DynaActionForm (or subclass)
automatically from your business objects without having to configure
the form-bean and form-property
elements ahead of time.
Solution
Use Hubert Rabago's Formdef plug-in. You can download formdef.jar from https://formdef.dev.java.net/ and copy it to your application's WEB-INF/lib directory. Formdef allows you to define form definitions in an XML file, as shown in Example 5-14.This file should be placed in the WEB-INF folder of your web application and given a meaningful name such as form-defs.xml.
Example 5-14. Formdef form definitions
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE form-definition PUBLIC "-//FormDef//FormDef Form Definition//EN"
"form-defs_0_5.dtd">
<form-definition>
<formset>
<form name="EmployeeForm"
beanType="com.oreilly.strutsckbk.ch05.EmployeeFd"/>
</formset>
</form-definition>The form element maps a form named with the
name element to a business object whose class is
specified by the beanType attribute.
Next, add a plug-in element for
Formdef to your
struts-config.xml file:
<plug-in className="formdef.plugin.FormDefPlugIn">
<set-property property="defnames"
value="/WEB-INF/form-defs.xml"/>
</plug-in>The form named in the form element can be used in
your application as if you had explicitly declared the form using a
form-bean element in the
struts-config.xml file. Here's
an action that uses the
EmployeeFdForm:
<action path="/SaveEmployeeFd" name="EmployeeFdForm" ...