struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Prasanth Pasala <ppas...@pangburngroup.com>
Subject Re: java.lang.ClassCastException: org.apache.struts2.dispatcher.mapper.ActionMapping
Date Mon, 18 Dec 2017 17:03:05 GMT
Added it to Struts JIRA (WW-4904) If I set the struts.actionMapping attribute to null it still
causes the class cast exception. What I have seen is that after setting it to null if you
call
getAttribute you would still get the old ActionMapping object, not sure how that is possible.
Thanks, Prasanth ---------------------------------------------------------------------------
[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.



On 12/15/2017 04:54 PM, Prasanth Pasala wrote:
> 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-unsubscribe@struts.apache.org
>>> For additional commands, e-mail: user-help@struts.apache.org    
>>
>


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message