struts-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sachin Tandon (JIRA)" <j...@apache.org>
Subject [jira] Created: (WW-3415) Issues with Token session interceptor - Blank page is returned in case of double submission
Date Wed, 24 Mar 2010 11:02:27 GMT
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


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 is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message