2014-01-10 51 views
2

如何從VisualForce頁面調用控制器方法,而不發生任何onclick事件? 我VisualForce頁面會像從visualforce調用javascript中的控制器方法

<apex:page standardController="Account"> 

    <script> 
    /* Here i need to call a controller class with out any onclick event. It should load by itselef */ 

    </script> 

</apex:page> 

和我的控制器類就會像

public class OrderPadController { 
    /* this will be the constructor */ 

    public PageReference openPage() { 
     PageReference newpage = new Pagereference('/apex'+'/pagetoopen'+'?aid='+a.id); 
     openorderpadembed.setRedirect(false); 
     return openorderpadembed;  
    } 

從我VisualForce頁我需要調用方法openPage()

請幫我

回答

4

您可以通過以下方式使用JavaScript Remoting for Apex Controllers

<apex:page standardController="Account" extensions="OrderPadController"> 
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
    <script> 
     window.$j = jQuery.noConflict(); 
     $j(document).ready(function() { 
     OrderPadController.openPage(function(result, event){ 

      console.log(result); 
      window.open(result,"_self"); 

     }); 
     }); 

    </script> 
</apex:page> 
public class OrderPadController { 
    // 

    @remoteAction 
    public PageReference openPage() { 
     PageReference newpage = NEW Pagereference('/apex' + '/pagetoopen' + '?aid=' + a.id); 
     openorderpadembed.setRedirect(false); 
     return openorderpadembed; 
    } 
} 
+0

嗨,感謝您的回覆。在腳本中 OrderPadController.openPage(function(result,event){});功能中應該是什麼結果和事件?我不需要發送任何參數。我對此感到陌生請解釋。 – Prathyush

+0

對不起,我錯過了返回值是頁面參考,我會在幾個小時內通過你的情況,因爲現在我正在回家的路上 –

+0

@Ramesh請再看看我的答案,我已經編輯過它。但請描述你的情況,我想有更多的選擇可以用更方便直接的方式來滿足你的需求。 –

1
<apex:page standardController="Account" extensions="OrderPadController" 
    action="{!openPage}"> 
</apex:page> 

action參數會打電話給你想要的方法,只要在頁面加載。這是一個危險的屬性,如果您要通過Salesforce的安全審查流程,將會指出一個危險屬性。例如,被調用的動作可以操作數據庫值(而OrderPadController構造函數不能),而哲學是訪問頁面的行爲不應該有任何副作用。

在特定情況下,你可以做到這一點,即使沒有任何的Apex代碼都:

<apex:page standardController="Account" 
    action="/apex/Gantt?aid={!$CurrentPage.parameters.id}"> 
    Look Mom, no hands! 
</apex:page> 

由於帕維爾提到 - 請寫更多關於您的要求。我懷疑你甚至不需要這個visualforce頁面充當重定向,簡單的自定義鏈接或按鈕(類型= url而不是Visualforce或Javascript)可以做到這一點...

相關問題