tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:コミュニティユーザ用のVisualforceページで$Pageをつかったときにエラーが発生した話

コミュニティユーザでVisualforceページにアクセスしたときに原因不明のエラーが発生しました。

f:id:tyoshikawa1106:20140305010204p:plain


コミュニティユーザで使用するための権限周りの設定と社内ユーザ、カスタマーポータルユーザからアクセスしたときは正常に動作するという状況でした。


調べてみた結果こちらのコードが原因だったということがわかりました。

<apex:include pageName="{!$Page.CommunityChangePasswordCss}" />


CSSの情報を別ページに分け、inculdeタグで読み込んでいる処理なのですが、この処理の「$Page」でエラーが発生したみたいです。


試しに次のように修正したところコミュニティユーザでもエラーが発生しなくなりました。

<apex:include pageName="CommunityChangePasswordCss" />


コミュニティユーザだと$Pageの扱いが通常とは異なるみたいです。
基本的にVisualforceページ内で他のページを参照するときは$Pageを使う方がいいと思うのですが、コミュニティユーザで使用するページの場合は$Pageを使わずに参照する必要があるみたいです。


ちなみにApexクラス内でページを参照するときに使う次の処理は問題なく動作することを確認できました。

return Page.CommunityRegisterConfirm;


影響があるのは「$Page」だけみたいです。

追記

apex:outputLinkなどで使う場合は「$Page」を使ってもエラーになりませんでした。