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 >