[
https://issues.apache.org/jira/browse/WW-3415?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14087524#comment-14087524
]
Lukasz Lenart commented on WW-3415:
-----------------------------------
Maybe it is related to WW-3865 and WW-3865 ? Can you test with the latest
available version?
> Issues with Token session interceptor - Blank page is returned in case of
> double submission
> -------------------------------------------------------------------------------------------
>
> Key: WW-3415
> URL: https://issues.apache.org/jira/browse/WW-3415
> Project: Struts 2
> Issue Type: Bug
> Components: Core Interceptors
> Affects Versions: 2.0.11.1
> Reporter: Sachin Tandon
> Fix For: 2.3.18
>
>
> Blank page is returned in case of double submission. I am using struts
> version - 2.0.11.1
> I have extendend TokenSessionStoreInterceptor class in my code and not
> changed any functionality. Following is how my class looks like
> public class MyClass extends TokenSessionStoreInterceptor{
> /**
> * Default Serial Version Id
> */
> private static final long serialVersionUID = 1L;
>
> protected String handleInvalidToken(ActionInvocation invocation) throws
> Exception {
> ActionContext ac = invocation.getInvocationContext();
> HttpServletRequest request = (HttpServletRequest)
> ac.get(ServletActionContext.HTTP_REQUEST);
> HttpServletResponse response = (HttpServletResponse)
> ac.get(ServletActionContext.HTTP_RESPONSE);
> String tokenName = TokenHelper.getTokenName();
> String token = TokenHelper.getToken(tokenName);
> if ((tokenName != null) && (token != null)) {
> Map params = ac.getParameters();
> params.remove(tokenName);
> params.remove(TokenHelper.TOKEN_NAME_FIELD);
> ActionInvocation savedInvocation =
> InvocationSessionStore.loadInvocation(tokenName, token);
> if (savedInvocation != null) {
> // set the valuestack to the request scope
> ValueStack stack = savedInvocation.getStack();
> Map context = stack.getContext();
>
> request.setAttribute(ServletActionContext.STRUTS_VALUESTACK_KEY, stack);
> ActionContext savedContext =
> savedInvocation.getInvocationContext();
>
> savedContext.getContextMap().put(ServletActionContext.HTTP_REQUEST, request);
>
> savedContext.getContextMap().put(ServletActionContext.HTTP_RESPONSE,
> response);
> Result result = savedInvocation.getResult();
> if ((result != null) &&
> (savedInvocation.getProxy().getExecuteResult())) {
> synchronized (context) {
> result.execute(savedInvocation);
> }
> }
> // turn off execution of this invocations result
> invocation.getProxy().setExecuteResult(false);
> return savedInvocation.getResultCode();
> }
> }
> return INVALID_TOKEN_CODE;
> }
> protected String handleValidToken(ActionInvocation invocation) throws
> Exception {
> // we know the token name and token must be there
> String key = TokenHelper.getTokenName();
> String token = TokenHelper.getToken(key);
> InvocationSessionStore.storeInvocation(key, token, invocation);
>
> return invocation.invoke();
> }
> }
> Now, whenever I do a double submission for a functionality like search (which
> gets loads of data from the database), previously saved invocation does not
> complete and savedInvocation.getResultCode() returns null (inside
> handleInvalidToken method). Due to which I receive a blank page.
> Whenever I do a debug(from eclipse) on handleInvalidToken method,
> savedInvocation.getResultCode() value changes from null to "success" as I
> wait inside the method for sometime.
> I have also put in savedInvocation.isExecuted() in this handleInvalidToken
> method and noticed that its value changes from false to true if I wait on the
> line of code for some time.
--
This message was sent by Atlassian JIRA
(v6.2#6252)