2011-08-30 15 views

Respuesta

1

Usted puede obtener un nombre de vista en la página JSP como se muestra a continuación:

${pageContext.request.servletPath} 
+0

No funciona. Devuelve: '/ WEB-INF/pages/profile.jsp', pero necesita' profile' – marioosh

+0

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 –

8

$ {requestScope [ 'javax.servlet.forward.servlet_path']}

+0

¡Esto debe marcarse como respuesta! – yglodt

+0

Aparece que requestScope es nulo, el mensaje de excepción es "no se puede indexar en un valor nulo" – cmaduro

15

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> 
3

sólo para la gente que va a buscar Solución Thymeleaf:

${#httpServletRequest.getServletPath()} 
+0

Igual que @Cyrils answer: devuelve la ruta en lugar del nombre de la vista devuelta. – dtrunk

+0

funciona bien para mí! ¡Gracias por esto! – Roland

Cuestiones relacionadas