• Kouichi Hashimoto
  • NEWBIE
  • 0 Points
  • Member since 2012

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 1
    Questions
  • 1
    Replies


Apex+VisualForceで、オブジェクトの値によって、表示されるページを変えたいと考えています。
判別用のpage_baseを作り、そこからsetRedirect(false)なアクションメソッドで画面遷移しようとしたのですが、
このメソッドをActionFunctionでpage_baseから呼んでも画面が遷移せず、はまってしまいました。

setRedirect(true)なら動くのですが、これだとブラウザの戻るボタンが機能しないため、出来れば避けたいと思っています。

なにか他の方法をご存知の方はいらっしゃらないでしょうか?


念のため、動作しないサンプルを載せておきます。

 

<!-- page_base.page -->
<apex:page standardController="Account" extensions="test" showHeader="false" sidebar="false">
  <apex:form ><apex:actionFunction action="{!Redirect}" name="actionRedirect" rerender="dummy" /></apex:form>
  <script type="text/javascript">actionRedirect();</script>
</apex:page>

<!-- pageFirst.page -->
<apex:page standardController="Account" extensions="test" showHeader="false" sidebar="false">
  <H1>PAGE_FIRST</h1>
</apex:page>

<!-- pageSecond.page -->
<apex:page standardController="Account" extensions="test" showHeader="false" sidebar="false">
  <H1>PAGE_SECOND</h1>
</apex:page>

//test.cls
public with sharing class test {
  public test(ApexPages.StandardController controller){ }
  public PageReference Redirect(){
    if(判定)    return first();
    else    return second();
  }
  public PageReference first(){
    PageReference next = Page.pageFirst;
    next.setRedirect(false);
    return next;
  }
  public PageReference second(){
    PageReference next = Page.pageSecond;
    next.setRedirect(false);
    return next;
  }
}

 

 


Apex+VisualForceで、オブジェクトの値によって、表示されるページを変えたいと考えています。
判別用のpage_baseを作り、そこからsetRedirect(false)なアクションメソッドで画面遷移しようとしたのですが、
このメソッドをActionFunctionでpage_baseから呼んでも画面が遷移せず、はまってしまいました。

setRedirect(true)なら動くのですが、これだとブラウザの戻るボタンが機能しないため、出来れば避けたいと思っています。

なにか他の方法をご存知の方はいらっしゃらないでしょうか?


念のため、動作しないサンプルを載せておきます。

 

<!-- page_base.page -->
<apex:page standardController="Account" extensions="test" showHeader="false" sidebar="false">
  <apex:form ><apex:actionFunction action="{!Redirect}" name="actionRedirect" rerender="dummy" /></apex:form>
  <script type="text/javascript">actionRedirect();</script>
</apex:page>

<!-- pageFirst.page -->
<apex:page standardController="Account" extensions="test" showHeader="false" sidebar="false">
  <H1>PAGE_FIRST</h1>
</apex:page>

<!-- pageSecond.page -->
<apex:page standardController="Account" extensions="test" showHeader="false" sidebar="false">
  <H1>PAGE_SECOND</h1>
</apex:page>

//test.cls
public with sharing class test {
  public test(ApexPages.StandardController controller){ }
  public PageReference Redirect(){
    if(判定)    return first();
    else    return second();
  }
  public PageReference first(){
    PageReference next = Page.pageFirst;
    next.setRedirect(false);
    return next;
  }
  public PageReference second(){
    PageReference next = Page.pageSecond;
    next.setRedirect(false);
    return next;
  }
}