2011-08-30 8 views

risposta

1

È possibile ottenere un nome di visualizzazione nella pagina JSP come illustrato di seguito:

${pageContext.request.servletPath} 
+0

Non funziona. Restituisce: '/ WEB-INF/pages/profile.jsp', ma ho bisogno di' profile' – marioosh

+0

scusate per quello, non so un altro modo tranne che avete già descritto nel vostro messaggio iniziale. btw, metto sempre il nome della vista sul modello quando ne ho bisogno a mio avviso –

8

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

+0

Questo dovrebbe essere contrassegnato come risposta! – yglodt

+0

Ricevo requestScope è null, il messaggio di eccezione è "non può indicizzare in un valore nullo" – cmaduro

15

mi sono imbattuto in questo stesso problema di recente. Potrebbe esserci un modo ufficiale per risolvere questo problema, ma non sono riuscito a trovarlo. La mia soluzione era creare un intercettore per posizionare il nome della vista nel modello.

mio intercettore è molto semplice:

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

} 

e la registrazione nella configurazione primavera, è anche piuttosto semplice (utilizzando la configurazione dello spazio dei nomi):

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

solo per le persone che cercare Soluzione Thymeleaf:

${#httpServletRequest.getServletPath()} 
+0

Uguale a @Cyrils answer: restituisce il percorso anziché il nome della vista restituita. – dtrunk

+0

funziona bene per me! Grazie per questo! – Roland

Problemi correlati