Class RepopulateConversionErrorFieldValidatorSupport

java.lang.Object
org.apache.struts2.validator.validators.ValidatorSupport
org.apache.struts2.validator.validators.FieldValidatorSupport
org.apache.struts2.validator.validators.RepopulateConversionErrorFieldValidatorSupport
All Implemented Interfaces:
FieldValidator, ShortCircuitableValidator, Validator
Direct Known Subclasses:
ConversionErrorFieldValidator

public abstract class RepopulateConversionErrorFieldValidatorSupport extends FieldValidatorSupport

An abstract base class that adds in the capability to populate the stack with a fake parameter map when a conversion error has occurred and the 'repopulateField' property is set to "true".

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 -->
 <ww:form action="someAction" method="POST">
   ....
   <ww:textfield
       label="My Integer Field"
       name="myIntegerField" />
   ....
   <ww:submit />
 </ww:form>

 
 
 

 <!-- xwork.xml -->
 <xwork>
 <include file="xwork-default.xml" />
 ....
 <package name="myPackage" extends="xwork-default">
   ....
   <action name="someAction" class="example.MyActionSupport.java">
      <result name="input">myJspPage.jsp</result>
      <result>success.jsp</result>
   </action>
   ....
 </package>
 ....
 </xwork>

 
 
 

 <!-- MyActionSupport.java -->
 public class MyActionSupport extends ActionSupport {
    private Integer myIntegerField;

    public Integer getMyIntegerField() { return this.myIntegerField; }
    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>

 
 
Author:
tm_jee
  • Constructor Details

    • RepopulateConversionErrorFieldValidatorSupport

      public RepopulateConversionErrorFieldValidatorSupport()
  • Method Details

    • isRepopulateField

      public boolean isRepopulateField()
    • setRepopulateField

      public void setRepopulateField(boolean repopulateField)
    • validate

      public void validate(Object object) throws ValidationException
      Description copied from interface: Validator
      The validation implementation must guarantee that setValidatorContext will be called with a non-null ValidatorContext before validate is called.
      Parameters:
      object - the object to be validated.
      Throws:
      ValidationException - is thrown if there is validation error(s).
    • repopulateField

      public void repopulateField(Object object) throws ValidationException
      Throws:
      ValidationException
    • escape

      protected String escape(String value)
    • doValidate

      protected abstract void doValidate(Object object) throws ValidationException
      Throws:
      ValidationException