2011-08-30 9 views

Odpowiedz

1

można uzyskać nazwę widok w stronę JSP, jak to pokazano poniżej:

${pageContext.request.servletPath} 
+0

To nie działa. Zwraca: '/ WEB-INF/pages/profile.jsp', ale potrzebuje' profilu' – marioosh

+0

przepraszam za to, nie znam innego sposobu poza tym, który już opisałeś w początkowej wiadomości. btw, zawsze umieszczam nazwę widoku na modelu, gdy potrzebuję go na mój widok –

8

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

+0

To powinno być oflagowane jako odpowiedź! – yglodt

+0

Otrzymuję requestScope ma wartość null, komunikat wyjątku "nie może indeksować do wartości pustej" – cmaduro

15

Pobiegłem w ten sam problem ostatnio. Może istnieć oficjalny sposób rozwiązania tego problemu, ale nie mogłem go znaleźć. Moim rozwiązaniem było stworzenie przechwytywacza, aby umieścić nazwę widoku w modelu.

Moja Interceptor jest bardzo prosta:

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); 
    } 

} 

i rejestrując go w config wiosny, jest również bardzo prosta (za pomocą konfiguracji namespace):

<mvc:interceptors> 
    <beans:bean class="ViewNameInModelInterceptor" /> 
</mvc:interceptors> 
3

Tylko dla osób, które poszukują Tymczasowe rozwiązanie:

${#httpServletRequest.getServletPath()} 
+0

To samo, co odpowiedź @Cyrils: Zwraca ścieżkę zamiast zwróconej nazwy widoku. – dtrunk

+0

działa dobrze dla mnie! Dzięki za to! – Roland

Powiązane problemy