How does Wicket setResponsePage() method work?

2019-04-29 17:08发布

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

标签: java wicket
2条回答
我想做一个坏孩纸
2楼-- · 2019-04-29 17:35

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);

查看更多
姐就是有狂的资本
3楼-- · 2019-04-29 17:38

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.

查看更多
登录 后发表回答