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