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" ...

Get Jakarta Struts Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.