You are facing this problem because the action is already resolved and invoked by the dispatcher, so changing the action name in the action context is useless. Struts has done this in filter
ActionMapping mapping = prepare.findActionMapping(request, response, true);
if (mapping == null) {
boolean handled = execute.executeStaticResourceRequest(request, response);
if (!handled) {
chain.doFilter(request, response);
}
} else {
execute.executeAction(request, response, mapping);
}