DEVFYI - Developer Resource - FYI

Struts Questions and Answers

Part:   1  2  3  4  5  6  7  8  9  10  11  12  13  14  15   16  17  18  19  20  21  22  23  24  25 

58. Can I have an Action without a form?


Yes. If your Action does not need any data and it does 
not need to make any data available to the view or
 controller component that it forwards to, it doesn't need 
 a form. A good example of an Action with no ActionForm is 
 the LogoffAction in the struts example application:

<action path="/logoff" type="org.apache.struts.webapp.example.LogoffAction"> <forward name="success" path="/index.jsp"/> </action> This action needs no data other than the user's session, which it can get from the Request, and it doesn't need to prepare any view elements for display, so it does not need a form.
However, you cannot use the <html:form> tag without an ActionForm. Even if you want to use the <html:form> tag with a simple Action that does not require input, the tag will expect you to use some type of ActionForm, even if it is an empty subclass without any properties.

59. Can you give me a simple example of using the requiredif Validator rule?


First off, there's an even newer Validator rule called
validwhen, which is almost certainly what you want to use,
since it is much easier and more powerful.
It will be available in the first release after 1.1 ships. 
The example shown below could be coded with validwhen as:

<form name="medicalStatusForm">

<field
    property="pregnancyTest" depends="validwhen">
  <arg0 key="medicalStatusForm.pregnancyTest.label"/>
  <var>
    <var-name>test</var-name>
    <var-value>((((sex == 'm') OR (sex == 'M')) 
    AND (*this* == null)) OR (*this* != null))</test>
  </var>
</field>

Let's assume you have a medical information form
with three fields,
 sex, pregnancyTest, and testResult. If sex is 'f' or 'F', 
 pregnancyTest is required. If pregnancyTest is not blank, 
 testResult is required. The entry in your validation.xml 
 file would look like this:

<form name="medicalStatusForm">

<field
    property="pregnancyTest" depends="requiredif">
  <arg0 key="medicalStatusForm.pregnancyTest.label"/>
  <var>
    <var-name>field[0]</var-name>
    <var-value>sex</var-value>
  </var>
  <var>
    <var-name>fieldTest[0]</var-name>
    <var-value>EQUAL</var-value>
  </var>
  <var>
    <var-name>fieldValue[0]</var-name>
    <var-value>F</var-value>
  </var>
  <var>
    <var-name>field[1]</var-name>
    <var-value>sex</var-value>
  </var>
  <var>
    <var-name>fieldTest[1]</var-name>
    <var-value>EQUAL</var-value>
  </var>
  <var>
    <var-name>fieldValue[1]</var-name>
    <var-value>f</var-value>
  </var>
  <var>
    <var-name>fieldJoin</var-name>
    <var-value>OR</var-value>
  </var>
</field>

<field
    property="testResult" depends="requiredif">
  <arg0 key="medicalStatusForm.testResult.label"/>
  <var>
    <var-name>field[0]</var-name>
    <var-value>pregnancyTest</var-value>
  </var>
  <var>
    <var-name>fieldTest[0]</var-name>
    <var-value>NOTNULL</var-value>
  </var>
</field>
</form>

Part:   1  2  3  4  5  6  7  8  9  10  11  12  13  14  15   16  17  18  19  20  21  22  23  24  25 

Struts Questions and Answers