mas*_*san 2 arguments salesforce visualforce
我有一个函数searchWorkByName,它以"key"作为参数,并使用SQOL来检索数据.
在visualforce方面,我有一个调用searchWorkByName的链接,但希望能够传递诸如字符'a'之类的参数
例如,(这会引发错误)
<apex:commandLink value="search!" action="{!searchWorkByName('aaa')}" />
Run Code Online (Sandbox Code Playgroud)
如果没有替代方案,是否可以这样做?
顶级课程
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;
}
}
Run Code Online (Sandbox Code Playgroud)
visualforce
<apex:page standardController="work__c" extenstions="SearchWorkTest">
<!-- Is it possible to pass argument like 'foo' ? -->
<apex:commandLink value="search!" action="{!searchWorkByName}" />
</apex:page>
Run Code Online (Sandbox Code Playgroud)
小智 10
您可以将页面中的参数传递到如下函数:
<apex:commandLink value="search!" action="{!searchWorkByName}">
<apex:param name="key" value="val"/>
</apex:commandLink>
Run Code Online (Sandbox Code Playgroud)
显然,在这种情况下参数的值是固定的.如果你想要一些动态的东西(即用户输入一些东西并传递给函数),我不是百分之百地确定你是怎么做的,但我认为这可能是可能的.然而,已经发布的解决方案为您提供了皮肤猫,但我想我会跟进一个替代方案,以防它有用.
不,你不能将参数传递给那样的行为.
1选项是使这个变量成为一个普通的表单字段,用户可以从下拉列表中选择文本/选择 - 如果你在Apex中使用相同的名称(并通过setter/getters使其公开可见),这将有效没有问题.查看我如何将Salesforce与Google地图集成的答案?开始.
第二个选项 - 如果这个搜索必须以某种方式以编程方式完成,而无需用户点击任何内容,如果数据来自页面本身(即在<apex:repeat>标签中读取)......你可以创建一个小帮助页面和控制器并将其称为组件.将数据传递给组件没有问题.检查<apex:component>和的文档<apex:componentBody>.但我认为第一个答案对您最有用.
祝好运!
| 归档时间: |
|
| 查看次数: |
8240 次 |
| 最近记录: |