code: @Override
  	public <T> T forwardTo(final Class<T> type) {
  		return proxifier.proxify(type, new MethodInvocation<T>() {
  
  			@Override
  			public Object intercept(T proxy, Method method, Object[] args, SuperMethod superMethod) {
  				try {
  					logger.debug("Executing {}", method);
  					ControllerMethod old = methodInfo.getControllerMethod();
  					methodInfo.setControllerMethod(DefaultControllerMethod.instanceFor(type, method));
  					Object methodResult = method.invoke(container.instanceFor(type), args);
  					methodInfo.setControllerMethod(old);
  
  					Type returnType = method.getGenericReturnType();
  					if (!(returnType == void.class)) {
  						request.setAttribute(extractor.nameFor(returnType), methodResult);
  					}
  					
  					if (response.isCommitted()) {
  						logger.debug("Response already commited, not forwarding.");
  						return null;
  					}
  					String path = resolver.pathFor(DefaultControllerMethod.instanceFor(type, method));
  					logger.debug("Forwarding to {}", path);
  					request.getRequestDispatcher(path).forward(request, response);
  					return null;
  				} catch (InvocationTargetException e) {
  					propagateIfPossible(e.getCause());
  					throw new ProxyInvocationException(e);
  				} catch (Exception e) {
  					throw new ProxyInvocationException(e);
  				}
  			}
  		});
  	}
docs: This implementation don't actually use request dispatcher for the
  forwarding. It runs forwarding logic, and renders its <b>default</b>
  view.