[ https://issues.apache.org/struts/browse/WW-1913?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] floyd.yao updated WW-1913: -------------------------- Description: When using '/*' as the FilterDispatcher mapping pattern,the FilterDispatcher.prepareDispatcherAndWrapRequest method will always prepares threadlocal dispatcher(got from Dispatcher.getInstance() ) for each request (including request like *.js,*.htm...) but never cleanup the threadlocal dispatcher like when action served, which result in the absence of wrapping raw request to StrutsRequestWrapper after the first non-action mapping request. The consequent requests for the same thread are all unwrapped(util an action request occur and the action request's output haven't any js , css file or sth like these;but these outputs' content vary from time to time...) . As for these unwrapped requests,their getAttribute method will not find attribute in valuestack ,the EL collapse :( I found two ways to solve this problem: 1. change the pattern from '/*' back to '*.do',and it works .(both Codebehind Plugin and zero configuration featrue of struts2 seem to work well in *.do pattern ,isnt it ?) 2. add ActionContextCleanUp filter before struts FilterDispatcher filter in web.xml ,thus it'll do cleanup for every request.(is it designed to be used like this ? the guide said it delegate the cleanup action as used with Sitemesh) So,Is there a need to move the 'ActionContextCleanUp.cleanUp(req);' to the outer try..finally block in class FilterDispatcher ?thus the '/*' pattern can also be used with EL in jsp . Is it a bug ? Any suggestion is appreciated :) was: When using '/*' as the FilterDispatcher mapping pattern,the FilterDispatcher.prepareDispatcherAndWrapRequest method will always prepares threadlocal dispatcher(got from Dispatcher.getInstance() ) for each request (including request like *.js,*.htm...) but never cleanup the threadlocal dispatcher like when action served, which result in the absence of wrapping raw request to StrutsRequestWrapper after the first non-action mapping request. And the consequent requests for the same thread are all unwrapped and their getAttribute will not find attribute in valuestack ,the EL collapse :( I found two ways to solve this problem: 1. change the pattern from '/*' back to '*.do',and it works .(both Codebehind Plugin and zero configuration featrue of struts2 seem to work well in *.do pattern ,isnt it ?) 2. add ActionContextCleanUp filter before struts FilterDispatcher filter in web.xml ,thus it'll do cleanup for every request.(is it designed to be used like this ? the guide said it delegate the cleanup action as used with Sitemesh) So,Is there a need to move the 'ActionContextCleanUp.cleanUp(req);' to the outer try..finally block in class FilterDispatcher ?thus the '/*' pattern can also be used with EL in jsp . Is it a bug ? Any suggestion is appreciated :) > Integrate valuestack with EL > ----------------------------- > > Key: WW-1913 > URL: https://issues.apache.org/struts/browse/WW-1913 > Project: Struts 2 > Issue Type: Bug > Components: Dispatch > Affects Versions: 2.0.6 > Environment: tomcat5.5.17 , struts2.0.6 > Reporter: floyd.yao > > When using '/*' as the FilterDispatcher mapping pattern,the FilterDispatcher.prepareDispatcherAndWrapRequest method will always prepares threadlocal dispatcher(got from Dispatcher.getInstance() ) for each request (including request like *.js,*.htm...) but never cleanup the threadlocal dispatcher like when action served, which result in the absence of wrapping raw request to StrutsRequestWrapper after the first non-action mapping request. The consequent requests for the same thread are all unwrapped(util an action request occur and the action request's output haven't any js , css file or sth like these;but these outputs' content vary from time to time...) . As for these unwrapped requests,their getAttribute method will not find attribute in valuestack ,the EL collapse :( > I found two ways to solve this problem: > 1. change the pattern from '/*' back to '*.do',and it works .(both Codebehind Plugin and zero configuration featrue of struts2 seem to work well in *.do pattern ,isnt it ?) > 2. add ActionContextCleanUp filter before struts FilterDispatcher filter in web.xml ,thus it'll do cleanup for every request.(is it designed to be used like this ? the guide said it delegate the cleanup action as used with Sitemesh) > So,Is there a need to move the 'ActionContextCleanUp.cleanUp(req);' to the outer try..finally block in class FilterDispatcher ?thus the '/*' pattern can also be used with EL in jsp . > Is it a bug ? Any suggestion is appreciated :) -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.