tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:2つのVFページと同一コントローラ

2つのVFページで同一のコントローラを使用することで変数の値を引き継ぐことができるのですが、ちゃんと使ったことがなかったので使い方を勉強しました。

画面遷移する際にPageReferenceのsetRedirect(false)を使用することで変数の値を引き継ぐことができます。

下記のソースを作って動作確認を行いました。

動作確認

Search!!ボタンをクリックすると取引先を適当に取得します。

f:id:tyoshikawa1106:20130503232940p:plain

取引先を1件以上取得できたらClick!!ボタンが表示されます。
Click!!ボタンをクリックすると別画面に遷移します。
変数にセットした情報が引き継がれて取引先の検索結果を表示できます。

f:id:tyoshikawa1106:20130503233301p:plain

このときsetRedirect(true)だと値が引き継がれないことを確認できます。
また、setRedirect(false)で遷移するとURLが変更されません。

検証時に悩んだこと

最初にsetRedirect(false)を試したときに画面遷移が実行されなくてすごく悩みました。
Discussion Boards等いろいろ探してみてなんとか原因がわかりました。

画面遷移をする"action"処理を実行する際に"reRender"を指定したことが原因でした。
今回の処理の場合は、"reRender"は指定してはいけなかったみたいです。


けっこう手こずりましたが、とりあえず"setRedirect"の使い方を理解できたので良かったです。