将硬编码字符串作为参数从命令按钮传递并在Apex类中使用

时间:2018-05-04 11:40:23

标签: visualforce apex

newbie to salesforce所以请原谅任何错误或错误的语法。 基本上我们有一个脏的变通方法手动菜单,允许用户从命令按钮下载PDF字母。

目前,Apex控制器具有多个 PageReference类,手动(硬编码)为每个需要转换为PDF的字母引用VisualForce页面。例如

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

我想通过简单地将VF页面名称作为字符串值传递到命令按钮并在顶点类中使用它来创建一个可重用的类,但似乎无法获取该值(始终为null)。

<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 :(得分:0)

您的Visualforce与属性一起看起来很准确,但对于页面,它应该是

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

答案 1 :(得分:0)

默认情况下,commandButtons不传递参数。这是愚蠢的,但这是一个怪癖。

请参阅我的2012年答案,了解更多信息和2个修正:https://salesforce.stackexchange.com/questions/4937/why-does-apexparam-assignto-work-with-apexcommandlink-but-not-apexcommandbutt/4950#4950

答案 2 :(得分:0)

干杯们,设法让这个工作,我发现:

  1. 如果添加了,我可以从命令按钮传递值 变量值为隐藏字段而不是参数。

    或使用Eyescream

  2. 中提到的params命令链接

    但确实需要&#39; / apex /&#39;来自Garath的+ varname来接你所有你的答案之间我能够完成我的第一个小Apex介绍。