Как изменить «pathInfo» HttpServletRequest - PullRequest
2 голосов
/ 23 февраля 2011

Я боюсь задать странный вопрос, но я хочу изменить «pathInfo» HttpServletRequest при методе обработчика контроллера.Пожалуйста, посмотрите ниже.

Я знаю, что могу получить "pathInfo" с помощью getPathInfo ().Тем не мение.Я не знаю, как настроить pathInfo.Является ли это возможным ?Любая помощь будет оценена

@RequestMapping(value = "show1" method = RequestMethod.GET)
public String show1(Model model, HttpServletRequest request) {

    // I want to set up "PathInfo" but this kind of methods are not provided 
    //request.setPathInfo("/show2");

    // I thought that BeanUtils.copy may be available.. but no ideas.

    // I have to call show2() with the same request object
    return show2(model, request);
}

// I am not allowed to edit this method
private String show2(Model model, HttpServletRequest request) {

    // I hope to display "http://localhost:8080/contextroot/show2"
    System.out.println(request.getRequestURL());

    return "complete";
}

Ответы [ 2 ]

4 голосов
/ 23 февраля 2011

Вы не можете установить эти значения.

Единственный вариант - создать упаковку для вашего запроса, что-то вроде этого:

return show2(model, new HttpServletRequestWrapper(request) {
    public StringBuffer getRequestURL() {
        return new StringBuffer(
            super.getRequestURL().toString().replaceFirst("/show1$", "/show2"));
    }
});
1 голос
/ 23 февраля 2011

Информация о пути устанавливается браузером (клиентом) при запросе определенного URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...