user1096311
user1096311

Reputation:

How does Wicket setResponsePage() method work?

When learning about JSP and servlets, I heard about redirect and dispatch. Which of them does Wicket's setResponsePage() perform?

Upvotes: 5

Views: 9616

Answers (2)

Seid.M
Seid.M

Reputation: 185

setResponsePage(PageName.class) will redirect the browser to the PageName you need to go. Make sure that, you have already mount your Page.class to a given path. For example, in your Application init method, you can mount like this mountPage("/home.html", WelcomePage.class); then in some other page, when you have a need to go to the home page, you just call like this setResponsePage(WelcomePage.class);

Upvotes: 1

Martijn Dashorst
Martijn Dashorst

Reputation: 3692

What setResponsePage does is dependent on a couple of factors: how many times you call setResponsePage, which variant of the setResponsePage you call and what render strategy you use.

You can call setResponsePage many times during a request. Wicket uses the last one to work with.

There are two variants of setResponsePage: with a Page instance and with a Page class and PageParameters. The latter sends a redirect to a bookmarkable URL to the browser. The former will, depending on the render strategy, either:

  • ONE_PASS_RENDER
    • render the page directly to the browser
  • REDIRECT_TO_BUFFER
    • render the page to a buffer, send a redirect to the browser (which then retrieves the buffered, rendered markup), or
  • REDIRECT_TO_RENDER
    • send a redirect to the browser, which then sends a request to render the page

So the first option is dispatch, the second option is dispatch followed by a redirect, and the third option would be redirect in servlet terms.

Upvotes: 19

Related Questions