recyclebin5385 created WW-4167:
----------------------------------

             Summary: Unable to create a custom validator inheriting 
IntRangeFieldValidator
                 Key: WW-4167
                 URL: https://issues.apache.org/jira/browse/WW-4167
             Project: Struts 2
          Issue Type: Bug
          Components: XML Validators
    Affects Versions: 2.3.15.1
         Environment: Windows 7 64bit, Java Runtime Environment 7, Tomcat 7
CentOS 5 32bit, Java Runtime Environment 6, Tomcat 6
            Reporter: recyclebin5385
            Priority: Minor


I created a custom struts validator class which inherits 
IntRangeFieldValidator, but a runtime error occurs when checking a input value 
with the validator.
When I examined the internal data with a debugger, properties "min" and "max" 
of the custom class were stored as Strings, not Integers.

Parameters "min" and "max" are read from [ActionName]-validation.xml, converted 
to Integers, and set to the properties of a validator instance using OGNL.
But the conversion to Integers is skipped for a derived class of 
IntRangeFieldValidator.
The cause seems to be a bug in OGNL library. See 
https://issues.apache.org/jira/browse/OGNL-238.
Methods setMin and setMax's argument types are the type parameter T in 
AbstractRangeValidator<T>.
OGNL library handles the type parameter for a directly derived class of a 
generic class, but not for an indirectly derived one.

A workaround is to override all getters and setters with a parameterized class 
in a custom validator class without using a type parameter.
That is, when I define a class which extends IntRangeFieldValidator, I have to 
also define methods "Integer getMin()", "void setMin(Integer min)", "Integer 
getMax()" and "void setMax(Integer max)" in the class.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to