みなさんこんにちは。
Salesforceお助け隊の加藤です。
Visualforceで作成したページに最初にアクセスした際に、
オブジェクトの更新を行おうと考えていました。
そこで、Visualforceに紐づけたコントローラクラス(Apexクラス)の
コンストラクタで処理を実装しようと考えました。
そうすれば、Visualforceで作成したページに最初にアクセスした際に、
コントローラクラス(Apexクラス)がインスタンス化され、
コンストラクタが呼び出されるからです。
しかし、実際にオブジェクトの更新処理を実行すると
「DML currently not allowed」というエラーが発生して
処理を実行できませんでした。
ページを開いた際に処理を行いたい場合は、
ページ表示時のイベントとして用意されている
Visualforceページのapex:pageタグのaction属性にて指定した
メソッドにて実装することになります。
但し、このイベントはページを表示する毎に発生するので、
今回のようにページに最初にアクセスした場合という条件を満たすには、
内部的に、一度画面が表示されたかどうかのステータスを管理して対応する必要があります。
ちなみに私は、コンストラクタでフラグを初期化しておき、
一回でもapex:pageタグのaction属性にて指定したメソッドが実行された場合に、
フラグを立てるという方法で対応しています。
「セールスフォースお助け隊ブログ」へのコメントやご意見等ありましたら
ファンページまでお願いします。 Facebookのファンページ

