tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:ApexのMap型変数とGetメソッド

ApexのMap型変数はVisualforceページ側でも次のような感じでキーになる値を渡すことで値を取得することができます。apex:repeatタグなどでループ処理内で利用することで値を動的に取得することが可能です。

f:id:tyoshikawa1106:20150501195638p:plain

f:id:tyoshikawa1106:20150501194746p:plain


このMap型変数をVisualforeページ側で使用する方法ですが、Getメソッドとも組み合わせることができます。

f:id:tyoshikawa1106:20150501200145p:plain

f:id:tyoshikawa1106:20150501200043p:plain

f:id:tyoshikawa1106:20150501200319p:plain


例えば『ApexPages.StandardController』をつかったページネーション機能を実装するとき、すべてのレコード情報をMapに持たせておくとViewStateの制限に引っかかってしまう危険がありますが、Getメソッド内でページに表示する件数分のみMap変数にセットすることでそのようなトラブルを回避することができます。

Getメソッドを使う際の注意点

GetメソッドをVisualforceページから実行するようにするとreRenderなどで画面リフレッシュを行った際に2回実行するという仕様があります。

f:id:tyoshikawa1106:20150501201820p:plain

f:id:tyoshikawa1106:20150501201844p:plain


ステップ数の制限はなくなったのであまり気にする必要はなくなりましたが、Getメソッド内で複雑な処理を行っているとCPU Time Outなどの制限に引っかかる可能性もあるので、そのあたりも意識しておくと安心です。

サンプルコード

確認用に作ったサンプルコードです。