You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "Lukasz Lenart (JIRA)" <ji...@apache.org> on 2013/08/05 14:09:48 UTC

[jira] [Commented] (WW-4167) Unable to create a custom validator inheriting IntRangeFieldValidator

    [ 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