2014-01-10 2 views
2

Как я могу вызвать метод контроллера с страницы VisualForce без какого-либо события onclick? Моя страница Visualforce бы какВызвать метод контроллера из javascript в visualforce

<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 (функция (результат, событие) {}); каков должен быть результат и событие в функции? Мне не нужно отправлять что-либо в качестве параметра. Я новичок в этом. Пожалуйста, объясните. – 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) может сделать трюк ...

Смежные вопросы