ページ表示時にデータ更新を行いたい

目的

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;
  }
  ....

制限事項

参考資料