You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "floyd.yao (JIRA)" <ji...@apache.org> on 2007/05/07 10:35:42 UTC
[jira] Updated: (WW-1913) Integrate valuestack with EL
[ 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() in method prepareDispatcherAndWrapRequest ) 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 to StrutsRequestWrapper after the first non-action mapping request. And the unwrapped request 's getAttribute will not findAttribute 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() in method prepareDispatcherAndWrapRequest ) 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 to StrutsRequestWrapper after the first non-action mapping request. And the unwrapped request 's getAttribute will not findAttribute 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() in method prepareDispatcherAndWrapRequest ) 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 to StrutsRequestWrapper after the first non-action mapping request. And the unwrapped request 's getAttribute will not findAttribute 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.