ショッピング カートや、あるページ ビューから別のページ ビューへのコンテキストでコントローラー変数を保持する必要がある「ウィザード」のようなものを構築している場合、VisualForce でこれを行う最善の方法は、同じコントローラーを使用することです。
ユーザーが (actionFunctions、commandButtons、または commandLinks などを介して) フォームを送信し、コントローラーがページ参照を返すと、新しい visual force ページが同じコントローラーを使用する場合、ビュー ステートは保持されます。
このようにして、たとえば、1 ページ目の apex:inputField タグを使用して、ユーザーに名前とメールアドレスを入力させることができます。彼らは、ページ 1 と同じコントローラを使用するページ 2 に移動し、ページは同じコントローラ変数を参照できます。基本的に、コントローラーは引き続きスコープ内にあり、更新されたすべての変数もスコープ内にあります。
例:
ページ 1:
<apex:page controller="myController">
Please enter your name <apex:inputText value="{!shopper_name}"/>
<br/>
<apex:commandButton action="{!pageTwo}" value="Click for page two"/>
</apex:page>
2 ページ目:
<apex:page controller="myController">
You entered: <apex:outputText value="{!shopper_name}" />.
</apex:page>
コントローラ:
public class myController {
public string shopper_name { get; set; }
public myController() {
shopper_name = null;
}
}