function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
t.ishibuchit.ishibuchi 

コントローラーで、処理が成功したときに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ページに遷移する方法をご教授頂きたいです。
宜しくお願い致します。

Best Answer chosen by Admin (Salesforce Developers) 
Toyohisa TANAKAToyohisa TANAKA

ApexPages.hasMessages()で判定できないですか?

パスワード変更に失敗すると、ApexPages.hasMessages()がtrue となり、ApexPages.getMessages()でエラーメッセージが取得できると思います。

All Answers

Toyohisa TANAKAToyohisa TANAKA

ApexPages.hasMessages()で判定できないですか?

パスワード変更に失敗すると、ApexPages.hasMessages()がtrue となり、ApexPages.getMessages()でエラーメッセージが取得できると思います。

This was selected as the best answer
t.ishibuchit.ishibuchi

Toyohisa TANAKAさん

 

おっしゃる通り、ApexPages.hasMessages()で判定できました。

 

大変助かりました。ありがとうございました。