Page 画面遷移
forwardの場合
_/** * @see Page#onPost() */ public void onPost() { // Process form post .. setForward("index.htm"); }
値の引継ぎ
- 方法1
getContext().setRequestAttribute("customer", customer);
のように、setしてあげる。
- 方法2
直接、modelに登録
addModel("customer", customer); setPath("view-customer.htm");
- 方法3
PageForwarding
EditPage editPage = (EditPage) getContext().createPage("/edit-customer.htm"); editPage.setCustomer(customer); setForward(editPage);
のように、遷移先画面のPageをcreatePageメソッドで作成して、直接setしてしまう。
画面名をハードコーディングが気になるので、以下の方法推奨
EditPage editPage = (EditPage) getContext().createPage(EditPage.class); editPage.setCustomer(customer); setForward(editPage);
redirectの場合
setRedirect("/logout.htm");
コンテキストが "mycorp" で、"/customer/details.htm"を指定した場合、リダイレクト先は "/mycorp/customer/details.htm"となる。
正確なパスを取得したい場合
String path = getContext().getPagePath(Logout.class); setRedirect(path);
forwardの場合と同様に、
クラス指定も可能
setRedirect(Logout.class);
値を引き継ぎたい場合
Long transId = OrderDAO.purchase(order); setRedirect("trans-complete.htm?transId=" + transId);
とした場合、HttpServletResponse.encodeRedirectURL(url) を利用したencodeが行われる。