Added the below two lines to my filter (before the struts2 filter) in context2 
app. That seems to do the trick. Thought it might create a problem as I am 
setting a new ActionMapping in the request,
but seems to work fine. Do you see any side effects of this?

        request.setAttribute("struts.actionMapping", new ActionMapping());
        request.setAttribute("struts.valueStack", null);

Thanks,
Prasanth

On 12/15/2017 04:10 PM, Prasanth Pasala wrote:
> It seems like removeAttribute or setAttribute is not getting rid of the 
> attribute from request. See below. If I set the value to a random string then 
> I get a String can't be cast to ActionMapping
> exception.
>
>        Enumeration<String> attrs = request.getAttributeNames();
>         while(attrs.hasMoreElements()) {
>             System.out.println(attrs.nextElement());
>         }
>         System.out.println(request.getAttribute("struts.actionMapping"));
>         request.setAttribute("struts.actionMapping", null);
>         System.out.println(request.getAttribute("struts.actionMapping"));
>
> Output:
> 16:05:05,300 INFO  [stdout] (default task-13) 
> javax.servlet.forward.context_path
> 16:05:05,302 INFO  [stdout] (default task-13) 
> javax.servlet.forward.servlet_path
> 16:05:05,303 INFO  [stdout] (default task-13) 
> javax.servlet.forward.request_uri
> 16:05:05,303 INFO  [stdout] (default task-13) javax.servlet.forward.path_info
> 16:05:05,303 INFO  [stdout] (default task-13) 
> javax.servlet.forward.query_string
> 16:05:05,303 INFO  [stdout] (default task-13) javax.servlet.request.key_size
> 16:05:05,303 INFO  [stdout] (default task-13) __cleanup_recursion_counter
> 16:05:05,303 INFO  [stdout] (default task-13) 
> javax.servlet.request.cipher_suite
> 16:05:05,304 INFO  [stdout] (default task-13) struts.valueStack
> 16:05:05,308 INFO  [stdout] (default task-13) 
> javax.servlet.request.ssl_session_id
> 16:05:09,121 INFO  [stdout] (default task-13) ActionMapping{name='Login', 
> namespace='/', method='null', extension='action', params=null, result=null}
> 16:05:10,960 INFO  [stdout] (default task-13) ActionMapping{name='Login', 
> namespace='/', method='null', extension='action', params=null, result=null}
>
>
> On 12/15/2017 02:28 PM, Prasanth Pasala wrote:
>> Thanks for the prompt response. Tried removing the attribute from the 
>> request, but still getting the class cast exception. Is it possible it is 
>> being set after I have called the forward?    
>> request.removeAttribute("struts.actionMapping");     // FORWARD THE REQUEST  
>>    ServletContext sContext = context.getContext("/context2");     
>> RequestDispatcher rd =
>> sContext.getRequestDispatcher("/Login.action");    rd.forward(request, 
>> response);    [show/hide original text]
>> No it's not a Struts issue. You don't see this in Struts1 because maybe 
>> it doesn't use any object bounded to dispatched request. But Struts2 
>> wants to
>>
>> ActionMapping mapping = 
>> (ActionMapping)request.getAttribute("struts.actionMapping");
>>
>> A workaround would be removing object with key "struts.actionMapping" 
>> from request before dispatching.
>>
>> I hope this helps.
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
>> For additional commands, e-mail: user-h...@struts.apache.org    
>

Reply via email to