Fork me on GitHub
Edit on GitHub << back to Validation

conversion validator

Description

Field Validator that checks if a conversion error occurred for this field.

Parameters

Examples

<!-- Plain Validator Syntax -->
<validator type="conversion">
        <param name="fieldName">myField</param>
     <message>Conversion Error Occurred</message>
</validator>
  
<!-- Field Validator Syntax -->
<field name="myField">
   <field-validator type="conversion">
      <message>Conversion Error Occurred</message>
   </field-validator>
</field>

Repopulating Field upon conversion Error

The capability of auto-repopulating the stack with a fake parameter map when a conversion error has occurred can be done with repopulateField property set to true.

This is typically useful when one wants to repopulate the field with the original value when a conversion error occurred. Eg. with a textfield that only allows an Integer (the action class have an Integer field declared), upon conversion error, the incorrectly entered integer (maybe a text ‘one’) will not appear when dispatched back. With repopulateField property set to true, it will, meaning the textfield will have ‘one’ as its value upon conversion error.

<!-- myJspPage.jsp -->
<s:form action="someAction" method="POST">
  ....
  <s:textfield label="My Integer Field" name="myIntegerField" />
  ....
  <s:submit />
</s:form>
<struts>
....
    <package name="myPackage" extends="struts-default">
      ....
      <action name="someAction" class="example.MyActionSupport.java">
         <result name="input">myJspPage.jsp</result>
         <result>success.jsp</result>
      </action>
      ....
    </package>
....
</struts>
/** MyActionSupport.java **/
public class MyActionSupport extends ActionSupport {
    
    private Integer myIntegerField;
    
    public Integer getMyIntegerField() { 
        return this.myIntegerField; 
    }

    @StrutsParameter
    public void setMyIntegerField(Integer myIntegerField) {
        this.myIntegerField = myIntegerField;
    }
}
<!-- MyActionSupport-someAction-validation.xml -->
<validators>
  ...
  <field name="myIntegerField">
     <field-validator type="conversion">
        <param name="repopulateField">true</param>
        <message>Conversion Error (Integer Wanted)</message>
     </field-validator>
  </field>
  ...
</validators>