画面遷移
初期表示やリダイレクト表示で別画面へ遷移するには
initialize()
メソッドの戻り値で次画面のページクラスまたは
ページ名
を指定します.
例:ページクラス (FooPage.java)
public Class initialize() { return NextPage.class; }
関連項目
ポストバックで別画面へ遷移するには
do~()
メソッドの戻り値で次画面のページクラスまたは
ページ名
を指定します.
例:ページクラス (FooPage.java)
public Class doNext() { return NextPage.class; }
関連項目
異なったプロトコルで画面遷移するには
ライフサイクルメソッド
に
@Redirect
アノテーションを付与し,リダイレクトで使用するプロトコル (httpまたはhttps) を指定します.
例:ページクラスのプロパティ (FooPage.java)
Tigerアノテーション
@Redirect(protocol = ProtocolType.HTTPS) public Class doXxx() { return XxxPage.class; }
定数アノテーション
public static final String doXxx_REDIRECT = "protocol=https"; public Class doXxx() { return XxxPage.class; }
関連項目
外部サイトにリダイレクトするには
ページクラスに
javax.servlet.http.HttpServletResponse
型および
javax.faces.context.FacesContext
型のプロパティを用意します.
ライフサイクルメソッドの中で
HttpServletResponse
の
sendRedirect(String location)
メソッドを呼び出してリダイレクト先を指定します. その後,
FacesContext
の
responseComplete()
メソッドを呼び出します.
例:ページクラス (FooPage.java)
public HttpServletResponse response; public FacesContext facesContext; public Class doRedirect() { String url = "..."; response.sendRedirect(url); facesContext.responseComplete(); return null; }
関連項目
状態の引き継ぎ
画面を表示したときの状態をサブミットされたときまで引き継ぐには
初期表示
や
リダイレクト表示
,
ポストバック (自画面表示)
等で画面を表示したときのページクラスの状態 (HTMLの
<input>
等にマッピングされていないプロパティの値) を, 画面がサブミットされたとき (
ポストバック
) まで引き継ぐには,
ページスコープ
を使用します.
ページスコープ
を使用するには,引き継ぎたいプロパティに
PageScope
アノテーションを指定します.
例:ページクラスのプロパティ (FooPage.java)
Tigerアノテーション
@PageScope public String name;
定数アノテーション
public static final String PAGE_SCOPE = "name"; public String name;
ポストバック
時,
name
プロパティは
ページスコープ
に追加されます.
関連項目
画面遷移の前後で状態を引き継ぐには
ポストバック (リダイレクト) 時のページクラスの状態 (プロパティの値) を, リダイレクト表示 まで引き継ぐには, 引き継ぎたいプロパティを, 画面遷移元のページクラスと画面遷移先のページクラスの両方に, 同じ名前と型 で用意します.
例:画面遷移元ページクラスのプロパティ (FooPage.java)
public String name;
例:画面遷移先ページクラスのプロパティ (BarPage.java)
public String name;
ポストバック (リダイレクト) 時, 画面遷移元と 画面遷移先のページクラスに共通のプロパティは デフォルトスコープ に追加されます.
デフォルトスコープ は実質 サブアプリケーションスコープ であるため, リダイレクト時に引き継いだ状態は, 同じサブアプリケーションの画面を表示している間引き継がれ続けます. この動作が不都合な場合は「 画面遷移の前後だけ状態を引き継ぐには 」を参照してください.
関連項目
画面遷移の前後だけ状態を引き継ぐには
ポストバック (リダイレクト)
時のページクラスの状態 (プロパティの値) を,
リダイレクト表示
まで引き継ぐが, その後は同じサブアプリケーション内の画面でも引き継がないようにするには, 画面遷移
元
ページクラスのプロパティに
RedirectScope
アノテーションを指定します.
例:ページクラスのプロパティ (FooPage.java)
Tigerアノテーション
@RedirectScope public String name;
定数アノテーション
public static final String REDIRECT_SCOPE = "name"; public String name;
ポストバック (リダイレクト)
時,
name
プロパティは
リダイレクトスコープ
に追加されます.
リダイレクトスコープ は リダイレクト表示 後に破棄されるため, 再読込を行うと状態は失われます. 再読込で状態を維持する必要がある場合は, 画面遷移 先 ページクラスのプロパティに ページスコープ を指定してください. 詳細は「 画面を表示したときの状態をサブミットされたときまで引き継ぐには 」を参照してください.
関連項目
サブアプリケーション内の複数の画面に跨って状態を引き継ぐには
画面遷移の前後だけでなく,同一のサブアプリケーション内の画面を表示している間,
継続して状態を引き継ぐには, 画面遷移
元
ページクラスのプロパティに
SubapplicationScope
アノテーションを指定します.
例:ページクラスのプロパティ (FooPage.java)
Tigerアノテーション
@SubapplicationScope public String name;
定数アノテーション
public static final String SUBAPPLICATION_SCOPE = "name"; public String name;
画面表示時,
name
プロパティは
サブアプリケーションスコープ
に追加されます.
関連項目
異なったサブアプリケーションに跨って状態を引き継ぐには
ポストバック (リダイレクト)
時のページクラスの状態 (プロパティの値) を, 異なったサブアプリケーションのページに
リダイレクト表示
するまで引き継ぐには, 画面遷移
元
ページクラスのプロパティに
RedirectScope
アノテーションを指定します.
例:ページクラスのプロパティ (FooPage.java)
Tigerアノテーション
@RedirectScope public String name;
定数アノテーション
public static final String REDIRECT_SCOPE = "name"; public String name;
ポストバック (リダイレクト)
時,
name
プロパティは
リダイレクトスコープ
に追加されます.
リダイレクトスコープ は リダイレクト表示 後に破棄されるため, 再読込を行うと状態は失われます. 再読込で状態を維持する必要がある場合は, 画面遷移 先 ページクラスのプロパティに ページスコープ を指定してください. 詳細は「 画面を表示したときの状態をサブミットされたときまで引き継ぐには 」を参照してください.
関連項目
特定のサブミットボタンが押されたときは画面遷移で状態を引き継がないようにするには
画面遷移
元
のサブミットボタンに
TakeOver
アノテーションを指定して, 引き継ぎたいプロパティや引き継ぎたくないプロパティを指定します.
例:遷移元ページクラス (FooPage.java)
Tigerアノテーション
public String foo; public String bar; public String baz; @TakeOver(type = TakeOverType.INCLUDE, properties = "foo") public Class doSend() { ... return BarPage.class; }
定数アノテーション
public String foo; public String bar; public String baz; public static final String doSend_TAKE_OVER = "type='include', properties='foo'"); public Class doSend() { ... return BarPage.class; }
例:遷移先ページクラス (BarPage.java)
public String foo; public String bar; public String baz;
FooPage
の
doSend()
から
ポストバック (リダイレクト)
で
BarPage
に画面遷移する場合,
foo
プロパティのみ引き継がれ,
bar
および
baz
プロパティは引き継がれません.