[
https://issues.apache.org/struts/browse/WW-2587?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Brad Cupit updated WW-2587:
---------------------------
Description:
The SkipValidation annotation is a great addition, but it would be nice if it
was found on super class methods (i.e. the method being overridden) and/or
interfaces.
I have a CGLIB-generated proxy for my Action (created by Spring) so the
SkipValidation annotation is never found, since CGLIB-proxies extend the class
they proxy.
Admittedly, this is more of a problem with CGLIB, than with Struts2, however if
@SkipValidation were allowed on methods in interfaces or superclasses, my
problem would be solved.
Unfortunately, the validation annotations (like @RequiredStringValidator), are
found on super classes. So the net effect is that my SkipValidation annotation
is not found, but the validation annotations are, which means validation is
occurring when it shouldn't.
potential workarounds:
a) use one action method per Action so validation can always be done for that
entire class, or
b) use excludeMethods param when configuring the validation interceptor in
struts.xml
Note that for option b) to work with zero-configuration, the @ParentPackage
annotation must be applied to the Action class that will use the package
defined in struts.xml
Ideal fix:
The AnnotationValidationInterceptor#doIntercept(ActionInvocation) method would
check for the SkipValidation annotation on the method being overridden. This
would not only fix the CGLIB-proxy issue, but would also allow SkipValidation
to be used on interfaces and superclasses.
was:
The SkipValidation annotation is a great addition, but it would be nice if it
was found on super class methods (i.e. the method being overridden) and/or
interfaces.
I have a CGLIB-generated proxy for my Action (created by Spring) so the
SkipValidation annotation is never found, since CGLIB-proxies extend the class
they proxy.
Admittedly, this is more of a problem with CGLIB, than with Struts2, however if
@SkipValidation were allowed on methods in interfaces or superclasses, my
problem would be solved.
Unfortunately, the validation annotations (like @RequiredStringValidator),
_are_ found on super classes. So the net effect is that my SkipValidation
annotation is not found, but the validation annotations are, which means
validation is occurring when it shouldn't.
potential workarounds:
a) use one action per url so validation can always be done for that Action, or
b) use excludeMethods param when configuring the validation interceptor in
struts.xml
Ideal fix:
The AnnotationValidationInterceptor#doIntercept(ActionInvocation) method would
check for the SkipValidation annotation on the method being overridden. This
would not only fix the CGLIB-proxy issue, but would also allow SkipValidation
to be used on interfaces and superclasses.
> @SkipValidation not found on superclass method
> ----------------------------------------------
>
> Key: WW-2587
> URL: https://issues.apache.org/struts/browse/WW-2587
> Project: Struts 2
> Issue Type: Bug
> Components: Core Interceptors
> Reporter: Brad Cupit
>
> The SkipValidation annotation is a great addition, but it would be nice if it
> was found on super class methods (i.e. the method being overridden) and/or
> interfaces.
> I have a CGLIB-generated proxy for my Action (created by Spring) so the
> SkipValidation annotation is never found, since CGLIB-proxies extend the
> class they proxy.
> Admittedly, this is more of a problem with CGLIB, than with Struts2, however
> if @SkipValidation were allowed on methods in interfaces or superclasses, my
> problem would be solved.
> Unfortunately, the validation annotations (like @RequiredStringValidator),
> are found on super classes. So the net effect is that my SkipValidation
> annotation is not found, but the validation annotations are, which means
> validation is occurring when it shouldn't.
> potential workarounds:
> a) use one action method per Action so validation can always be done for that
> entire class, or
> b) use excludeMethods param when configuring the validation interceptor in
> struts.xml
> Note that for option b) to work with zero-configuration, the @ParentPackage
> annotation must be applied to the Action class that will use the package
> defined in struts.xml
> Ideal fix:
> The AnnotationValidationInterceptor#doIntercept(ActionInvocation) method
> would check for the SkipValidation annotation on the method being overridden.
> This would not only fix the CGLIB-proxy issue, but would also allow
> SkipValidation to be used on interfaces and superclasses.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.