[ https://issues.apache.org/jira/browse/WW-4167?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13729441#comment-13729441 ]
Lukasz Lenart commented on WW-4167: ----------------------------------- What's the problem here? The whole code of {{IntRangeFieldValidator}} is just few lines, you can directly start with {{AbstractRangeValidator}} {code:java} public class IntRangeFieldValidator extends AbstractRangeValidator<Integer> { public IntRangeFieldValidator() { super(Integer.class); } } {code} > 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