VisualForceからJavaScriptを経由してApexメソッドにパラメータを渡します。
基本は以下の株式会社ウフル様の技術ブログに書いてある通りです。
[salesforce]JavaScriptからVisualforceコントローラのメソッドにアクセスする方法
以下、実際自分が作成したコードを、パラメータの流れを追う形で整理してみます。
1.JavaScriptの呼び出し
VisualForceのコマンドボタンから、JavaScriptの関数を呼び出します。
JavaScriptには、引数'hoge'が渡されます。
Visual Force Page |
2.JavaScriptから、ActionFunctionの呼び出し
1で引数として渡された値をもとに、色々とJavaScriptの処理を行います。
ここでは単純にapex:actionFunctionの引数として使用します。
ActionFunctionの関数名は、actionfunctionタグの"name"属性に定義されている名称です。
JavaScript |
3.ActionFunctionからコントローラのApexメソッドを呼び出し
ActionFunctionの"name"属性には、このActionFunctionの名前を定義します。
そして"action"属性には、コントローラのメソッド名を設定します。
JavaScriptから渡されたパラメータは、"apex:param"タグで定義されたパラメータで受け取ります。
なお、ActionFunctionは、不要でもreRender属性を設定しないと動かないようです。
Visual Force Page |
4.Apexメソッドの実行
コントローラ側では、パラメータを受け取るための変数を用意し、getparametersメソッドを使用して、パラメータを取得します。この際、getに設定するパラメータ名は"apex:param"の"name"属性に設定した名称になります。
コントローラ |
これで、VisualForceからコントローラのメソッドを呼び出す前に、JavaScriptでいろいろとできるようになります。