2011-11-10 25 views
5

Ho funzionato servlet che è necessario convertire in Spring MVC controller per avere bean di accesso ecc. Perché in servlet normale request.getPathInfo() non ritorno null, ma in Spring Controller ottengo valore null? So che posso usare @PathVariable, ma mi chiedo perché i risultati di questo metodo sono la differenza?Spring MVC controller - getPathInfo() è null

@RequestMapping(value = {"/test", "/test/*"}) 
public void test(HttpServletRequest req, HttpServletResponse res) { 

    log.info(req.getPathInfo() == null); // true! 

    if (req.getMethod().equalsIgnoreCase("get")) { 
     // analogue to doGet... 
    } else { 
     // analogue to doPost... 
    } 

} 
+0

qual è l'URL che stai colpendo? –

+0

URL: 'http: // localhost: 8080/myApp/test/hello'. 'req.getPathInfo()' shuld return '/ hello' – marioosh

risposta

6

Penso che la soluzione è nel Javadoc di getPathInfo()

Le informazioni sul percorso in più segue il percorso servlet, ma precede la stringa query e inizierà con un carattere "/".

In caso di Spring il percorso del servlet è il percorso completo, quindi se si chiama getServletPath() restituirà sempre l'URI completo e getPathInfo() non restituirà nulla.

+0

Questo dovrebbe certamente essere contrassegnato come la risposta corretta ormai. –

Problemi correlati