Передайте жестко запрограммированные строки в качестве параметров из командной кнопки и используйте их в классе Apex. - PullRequest
0 голосов
/ 04 мая 2018

Новичок в salesforce, поэтому прошу прощения за любые ошибки или неправильный синтаксис. По сути, у нас есть грязное обходное меню, которое позволяет пользователям загружать буквы PDF с командных кнопок.

На данный момент контроллер Apex имеет множественные классы PageReference, которые вручную (жестко) ссылаются на страницу VisualForce для каждой буквы, которую необходимо преобразовать в PDF. например

public PageReference saveLetter1(){
//visualforce page to create PDF from
pageReference pdf = Page.ltr_one_generalexample;

Я хочу создать повторно используемый класс, просто передав имя страницы VF в виде строкового значения в командной кнопке и используя его в классе apex, но, похоже, не могу получить значение (всегда нулевое).

<apex:commandButton action="{!saveLetter1}"  styleClass="btn-info btn-lg" 
value="Download Letter">
<apex:param name="VPName" value="!ltr_ws_addbin_new_refusal" assignTo=" 
{!VPName}"/>
 </apex:commandButton>

А в классе Apex

public String VPName{get;set;}
//and use as 
pageReference pdf = Page.VPName;

Можно ли это сделать, и может ли ссылка на страницу использовать строковую переменную, как указано. Если есть более простой способ ??

Ответы [ 3 ]

0 голосов
/ 06 мая 2018

По умолчанию commandButtons не передают параметры. Это глупо, но это одна из странностей.

См. Мой ответ с 2012 года для получения дополнительной информации и 2 исправления: https://salesforce.stackexchange.com/questions/4937/why-does-apexparam-assignto-work-with-apexcommandlink-but-not-apexcommandbutt/4950#4950

0 голосов
/ 08 мая 2018

Ура, ребята, удалось заставить это работать, я обнаружил, что:

  1. Я мог бы передать значения из командной кнопки, если бы добавил значения переменных в виде скрытых полей вместо параметров.

    Или используя командную ссылку с параметрами, указанными Eyescream

Но для этого понадобилось имя / apex / '+ varname от Garath, чтобы между всеми вашими ответами я смог завершить свое первое маленькое вступление Apex.

0 голосов
/ 04 мая 2018

Ваш Visualforce выглядит точно вместе со свойством, но для ссылки на страницу он должен быть

PageReference pdf = new PageReference('/'+VPName);//or '/apex/'+VPName if apex page
...