me encontré en este mismo problema recientemente. Podría haber una forma oficial de resolver este problema, pero no pude encontrarlo. Mi solución fue crear un interceptor para colocar el nombre de la vista en el modelo.
Mi interceptor es muy simple:
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
public class ViewNameInModelInterceptor extends HandlerInterceptorAdapter {
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
if (modelAndView != null) {
modelAndView.addObject("springViewName", modelAndView.getViewName());
}
super.postHandle(request, response, handler, modelAndView);
}
}
y registrarlo en la configuración de primavera, también es bastante simple (utilizando la configuración de espacio de nombres):
<mvc:interceptors>
<beans:bean class="ViewNameInModelInterceptor" />
</mvc:interceptors>
No funciona. Devuelve: '/ WEB-INF/pages/profile.jsp', pero necesita' profile' – marioosh
lo siento por eso, no sé de otra manera, excepto que ya lo describió en su mensaje inicial. Por cierto, siempre pongo el nombre de la vista en el modelo cuando lo necesito en mi vista –