struts-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF subversion and git services (JIRA)" <>
Subject [jira] [Commented] (WW-4167) Unable to create a custom validator inheriting IntRangeFieldValidator
Date Fri, 11 Jul 2014 20:23:05 GMT


ASF subversion and git services commented on WW-4167:

Commit 351263a679dd72dc30e700d7eeed77f89e5bafac in struts's branch refs/heads/develop from
[;h=351263a ]

WW-4167 Renames based class to match the rest based classes
and marks extending validators as final to avoid users' confusion

> Unable to create a custom validator inheriting IntRangeFieldValidator
> ---------------------------------------------------------------------
>                 Key: WW-4167
>                 URL:
>             Project: Struts 2
>          Issue Type: Bug
>          Components: XML Validators
>    Affects Versions:
>         Environment: Windows 7 64bit, Java Runtime Environment 7, Tomcat 7
> CentOS 5 32bit, Java Runtime Environment 6, Tomcat 6
>            Reporter: recyclebin5385
>            Priority: Minor
>             Fix For: 2.3.18
> 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
> 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 was sent by Atlassian JIRA

View raw message