Spring MVC контроллер - getPathInfo () является нулевым - PullRequest
6 голосов
/ 10 ноября 2011

Я работал с сервлетом, который нужно преобразовать в Spring MVC-контроллер, чтобы иметь доступ к бинам Spring и т. Д. Почему в обычном сервлете request.getPathInfo() возвращает не null, но в Spring Controller я получаю нулевое значение? Я знаю, что могу использовать @PathVariable, но удивляюсь, почему результаты этого метода отличаются?

@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...
    }

}

1 Ответ

10 голосов
/ 10 ноября 2011

Я думаю, что решение находится в javadoc getPathInfo ()

Дополнительная информация о пути следует за путем сервлета, но предшествует строке запроса и будет начинаться с символа "/".

В случае Spring путь сервлета является полным путем, поэтому, если вы вызываете getServletPath (), он всегда будет возвращать полный URI, а getPathInfo () ничего не будет возвращать.

...