zono
zono

Reputation: 8584

How to change "pathInfo" of HttpServletRequest

I am afraid to ask a strange question but I want to change "pathInfo" of HttpServletRequest at a handler method of a Controller. Please take look at below.

I know I can get "pathInfo" by using getPathInfo(). However. I don't know how to set up the pathInfo. Is it possible ? Any help will be appreciated

@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";
}

Upvotes: 2

Views: 3857

Answers (2)

axtavt
axtavt

Reputation: 242786

You can't set these values.

The only option is to create a wrapper for your request, something like this:

return show2(model, new HttpServletRequestWrapper(request) {
    public StringBuffer getRequestURL() {
        return new StringBuffer(
            super.getRequestURL().toString().replaceFirst("/show1$", "/show2"));
    }
});

Upvotes: 4

adarshr
adarshr

Reputation: 62623

Path Info is set by the browser (client) when it requests a certain URL.

Upvotes: 1

Related Questions