【问题标题】:Is it possible to pass argument from visualforce apex tag?是否可以从 visualforce 顶点标签传递参数?
【发布时间】:2010-11-04 07:33:14
【问题描述】:

我有一个函数 searchWorkByName,它将“key”作为参数并使用 SQOL 来检索数据。

在 visualforce 方面,我有一个调用 searchWorkByName 的链接,但希望能够传递诸如字符“a”之类的参数

示例,(这会引发错误)

<apex:commandLink value="search!" action="{!searchWorkByName('aaa')}" />

如果没有,是否可以这样做?

顶级类

public class SearchWorkTest { 

    public PageReference searchWorkByName(String key) {

            //find record of work names starting from provided key character
            workNames = [select name from work__c where work__c.name like 'key%'];
            return Page.searchResult;   
     }
}

视觉力

<apex:page standardController="work__c" extenstions="SearchWorkTest">
  <!-- Is it possible to pass argument like 'foo' ? -->
  <apex:commandLink value="search!" action="{!searchWorkByName}" />
</apex:page>

【问题讨论】:

    标签: arguments salesforce visualforce


    【解决方案1】:

    您可以将页面中的参数传递给这样的函数:

    <apex:commandLink value="search!" action="{!searchWorkByName}">
      <apex:param name="key" value="val"/>
    </apex:commandLink>
    

    显然,本例中的参数值是固定的。如果你想要一些动态的东西(即用户输入一些东西并将其传递给函数),我不能 100% 确定你会如何做到这一点,但我认为这可能是可能的。但是,解决方案已经为你发布了猫的皮肤,但我想我会跟进一个替代方案,以防它有任何用处。

    【讨论】:

      【解决方案2】:

      不,您不能将参数传递给这样的操作。

      1 选项是使此变量成为用户可以键入文本/从下拉列表中选择的普通表单字段/无论如何 - 如果您将在 Apex 中为变量使用相同的名称(并使其由 setter/getter 公开可见),这将毫无问题地工作。在How do I integrate Salesforce with Google Maps? 上查看我的回答以开始使用。

      第二个选项 - 如果这个搜索必须以某种方式以编程方式完成,而用户不必点击任何东西,例如数据来自页面本身(即在&lt;apex:repeat&gt;标签中读取)......你可以制作一个小的帮助页面& 控制器并将它们称为组件。将数据传递给组件没有问题。检查&lt;apex:component&gt; 和&lt;apex:componentBody&gt; 的文档。但我认为第一个答案对你最有用。

      祝你好运!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-07-06
        • 2011-06-03
        • 1970-01-01
        • 2014-01-08
        • 2016-01-26
        • 2021-11-11
        • 1970-01-01
        相关资源
        最近更新 更多