ページ表示時にデータ更新を行いたい
目的
Visualforceのページが表示されたタイミングでデータの更新処理を行いたい
ポイント
一見、Controllerのコンストラクタに、更新(update/insert)処理をいれればよいように思われるが、Visualforceの制約で、コンストラクタに更新処理をいれても、正常に更新されない。
pageタグのaction属性で、更新処理を行うメソッドを指定すれば、ページ読み込み時に更新処理が実行される
サンプル・コード
ページが表示されたタイミングで、既読フラグをtrueに設定する
<apex:page showHeader="false" controller="TestController" action="{!setReadFlag}"> .... </apex:page>
public class TestController { ..... // pageタグのaction属性に指定したメソッドを実装 public PageReference setReadFlag(){ TestObject__c obj = [select id , ReadMessage__c from TestObject__c where Id = :testId]; if(obj != null){ //既読フラグをtrueに設定 obj.ReadMessage__c = true; update(obj); } return null; } ....