Как поместить значение в контроллер из другого класса? - PullRequest
0 голосов
/ 15 октября 2019

Я хотел бы вызвать PageReference из VF Page в другом классе (класс A), чтобы он мог генерировать PDF и устанавливать в качестве вложения. Страница VF получает идентификатор от своего контроллера. Я хочу поместить идентификатор из класса A на страницу VF, чтобы он использовался вместо контроллера.

Имя страницы VF: ContactDocument

public class DocuGenerate {
    public Contact ccc {get;set;} 

    public CaseClosureDocumentController(ApexPages.StandardController controller)
    {
        ccc = (Contact) controller.getRecord();
        ccc = [SELECT ID, NAME FROM CONTACT WHERE ID =: ccc.id];

        //GENERATE A PDF WITH THE ID RETRIEVED.
    }
}


public class SendEmail {
    public static void SendMessage() {
        List<Contact> con = [SELECT ID FROM CONTACT LIMIT 1];
        for(Contact c : con){
            Pagereference vfpage1 = Page.ContactDocument;
            //HOW WILL I PASS CON.ID TO VF PAGE SO THAT IT WILL BE THE ONE TO PROCESS, NOT THE ONE IN VFPAGE?
        }
    }
}

ОЖИДАЕТСЯ: GENERATE AФАЙЛ PDF, КОГДА ИНФОРМАЦИЯ О КОНТАКТНОМ ИДЕЛЕ, который У меня есть В ДРУГИХ КЛАССАХ, ВМЕСТЕ ОДНА, СОЗДАННАЯ НА СТРАНИЦЕ VF.

Ответы [ 2 ]

0 голосов
/ 15 октября 2019

Из того, что я могу разглядеть, вы хотите отправить идентификатор контакта с контроллера текущей страницы на страницу рендеринга PDF ... Это можно сделать с помощью ссылки на страницу и параметров URL. Добавление параметра в ссылку на страницу означает, что любой контроллер для этой страницы (стандартный или дополнительный) может получить этот идентификатор и использовать запись. Вот как вы добавляете параметр к ссылке на страницу ...

public class SendEmail {
   public static void SendMessage() {
     List<Contact> con = [SELECT ID FROM CONTACT LIMIT 1];
     for(Contact c : con){
       Pagereference vfpage1 = Page.ContactDocument;
       vfpage1.getParameters().put('id', c.id);
       return vfpage1; //You probably need to return the page reference 
                       //in order to redirect to it
     }
   }
}
0 голосов
/ 15 октября 2019

Ваш вопрос не ясен. Я понимаю, что вы хотите получить доступ к контакту из другого класса, а не со стандартного контроллера страницы VF.

Вы можете сделать это, добавив контроллер расширения, который ссылается на класс A на странице visualforce. Затем в классе DocuGenerate создайте еще один конструктор, который получит параметр типа class A.

<apex:page standardController="yourStandardController" extensions="A">
---
</apex:page>
...