[ 
https://issues.apache.org/jira/browse/WW-4083?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13668154#comment-13668154
 ] 

Johan Ström edited comment on WW-4083 at 5/28/13 7:33 AM:
----------------------------------------------------------

Sorry, I do not have a proof of concept/demo app right now, and don't really 
have the time to write one either now that I found the problem :/ But it should 
be pretty simple to set up:

* Action which extends ParameterNameAware accepting a parameter name "test"
* Action has setTest(String value)
* ParameterInterceptor which have acceptParamNames set to "none"

Try to call the action with ?test=nn, will fail.
                
      was (Author: jstrom):
    Sorry, I do not have a proof of concept/demo app right now, and don't 
really have the time to write one either now that I found the problem :/ But it 
should be pretty simple to set up:

* Action which extends ParameterNameAware accepting a parameter name "test"
* Action has setTest(String value)
* ParameterInterceptor which have acceptableParameters set to "none"

Try to call the action with ?test=nn, will fail.
                  
> ParametersInterceptor acceptParamNames and ParameterNameAware's 
> acceptableParameterName conflicts
> -------------------------------------------------------------------------------------------------
>
>                 Key: WW-4083
>                 URL: https://issues.apache.org/jira/browse/WW-4083
>             Project: Struts 2
>          Issue Type: Bug
>            Reporter: Johan Ström
>
> If the ParameterInterceptor config element 'acceptParamNames' does not match 
> a name, but the ParameterNameAware accepts it, the interceptor will fail to 
> set it on the valuestack.
> In ParametersInterceptor, the acceptParamNames config element is used in two 
> places on each interception:
> * to fill up acceptableParameters. This is based on both acceptParamNames 
> config, AND any ParameterNameAware's acceptableParameterName(Strings) method.
> * to setAcceptProperties on the MemberAccessValueStack. This ONLY uses the 
> acceptParamNames config.
> The problem occurs if acceptParamNames config rejects a param, but 
> acceptableParameterName(String) accepts it. The ParameterInterceptor will go 
> try to set the value on the stack (since it was accepted by the 
> ParameterNameAware), but the stack will reject it since setAcceptProperites 
> is based on acceptParamNames only.
> Not sure what the proper fix here is, but at least it explains the problem 
> I'm having and what other people might have.
> The reason it was not accepted by the config was that after the WW-3973 
> change, any parameter accepted by EITHER the config or the ParameterNameAware 
> is passed on. I tried to guard against this by setting a very restrictive 
> config for acceptableParameters (i.e. a dummy value which did not let ANY 
> parameter througH), with the idea that the ParameterNameAware would allow it.
> The quick fix for me would be to just accept the parameter name explicitly in 
> the config, and skip the ParameterNameAware part, but I still want to report 
> it as it is probably not what is expected.

--
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