You need to sign in to do that
Don't have an account?

コントローラーで、処理が成功したときにVisualforceページに遷移させたい
いつもお世話になっております。
Force.com SitesのChangePasswordController(パスワード変更用コントローラー)のchangePasswordメソッドで、
パスワードの変更が成功したときにVisualforceページに遷移させる方法をご教授頂きたいです。
*****以下、長くなってしまいますが、詳細です。*************************
以下のサイトを参考にさせて頂き、ポータルとForce.com Sitesを関連付けることで
Force.com Sitesに配置したログイン画面からポータルにログインできるようにしました。
http://blog.flect.co.jp/salesforce/2011/07/post-9fd5.html
また、サイトに書いてあるように、
SiteLoginController(ログイン画面用コントローラー)のloginメソッド
----------------------------------------
global PageReference login() {
String startUrl = System.currentPageReference().getParameters().get('startURL');
return Site.login(username, password, startUrl);
}
----------------------------------------
を、↓↓↓
----------------------------------------
global PageReference login() {
return Site.login(username, password, '/home/home.jsp');
}
----------------------------------------
と変更することでログイン後、ポータルのホーム画面に遷移するようにでき、
「'/home/home.jsp'」の部分を「'/apex/【Visualforceページ名】'」
と変更することでログイン後にVisualforceのページに遷移させることができました。
同様に、
ChangePasswordController(パスワード変更用コントローラー)のchangePasswordメソッドで、
パスワードの変更が成功したときにVisualforceページに遷移するよう実装したいと考えているのですが、上手く実装できませんでした。
----------------------------------------
public PageReference changePassword() {
return Site.changePassword(newPassword, verifyNewPassword, oldpassword);
}
----------------------------------------
を、
http://boards.developerforce.com/t5/Apex-Code-Development/Unit-Test-in-Apex-Code-Help/td-p/257565
を参考に、↓↓↓
----------------------------------------
public PageReference changePassword(){
Site.changePassword(newPassword, verifyNewPassword, oldpassword);
String s = Site.getOriginalUrl();
//エラーでないとき
if(s!=null) {
//Visualforceページに遷移
PageReference p = new PageReference('/apex/【Visualforceページ名】');
p.setRedirect(true);
return p;
}
//エラーのとき
else {
//遷移しない
return null;
}
}
----------------------------------------
のようにエラー判定しようと試みたのですが、上手くエラー判定できませんでした。
エラー判定の方法が上手くできていないのかと思っているのですが、
パスワードの変更が成功したときにVisualforceページに遷移する方法をご教授頂きたいです。
宜しくお願い致します。
ApexPages.hasMessages()で判定できないですか?
パスワード変更に失敗すると、ApexPages.hasMessages()がtrue となり、ApexPages.getMessages()でエラーメッセージが取得できると思います。
All Answers
ApexPages.hasMessages()で判定できないですか?
パスワード変更に失敗すると、ApexPages.hasMessages()がtrue となり、ApexPages.getMessages()でエラーメッセージが取得できると思います。
Toyohisa TANAKAさん
おっしゃる通り、ApexPages.hasMessages()で判定できました。
大変助かりました。ありがとうございました。