【Salesforce】ApexPages.addMessage can only be called from a Visualforce page Class.クラス名.メソッド名
Salesforceの開発をしているとき、エラーが発生しました。
メッセージはこんな感じです。
1 |
System.FinalException: ApexPages.addMessage can only be called from a Visualforce page Class.クラス名.メソッド名 |
メッセージの内容としては、ApexPages.addMessageを呼べるのはVisualforceページだけだよ、という感じですね。
どんな状況で出たかというと、バッチ処理の内部で別クラスの共通メソッドを使ったときに出ました。
共通メソッドではエラーが発生した際に画面へメッセージを表示していたのですが、バッチ処理ではVisualforceを使っていないため、エラーとなりました。
呼んでくれと指定されたメソッドにこんな罠があるとは。
ページが存在する場合のみメッセージを追加するように修正しました。
1 2 3 4 5 6 |
// Apexpages.addMessage(new Apexpages.Message(severity, message)); // ページが取得できる場合のみ、メッセージを追加 if(system.currentPageReference() != null){ Apexpages.addMessage(new Apexpages.Message(severity, message)); } |
共通のメソッドが存在する場合は要注意ですね。
No comments.