假设我有一个页面代码:
<apex:pageBlockTable value="{!allContacts}" var="c" >
<apex:column value="{!c.id}" headervalue="ID"/>
<apex:column value="{!c.FirstName}" headervalue="First Name"/>
<apex:column value="{!c.LastName}" headervalue="Last Name"/>
<apex:column value="{!c.Title}" headervalue="Title"/>
<apex:column value="{!c.Company}" headervalue="Company"/>
<apex:column>
<apex:commandButton action="{!addToRecruits}" value="Recruit">
<apex:param assignTo="{!leadID}" name="leadID" value="{!c.id}"/>
</apex:commandButton>
</apex:column>
</apex:pageBlockTable>
相关控制人员:
public String leadID { get; set; }
public PageReference addToRecruits() {
System.debug('LeadID is: ' + leadID);
List<Lead> potentialCandidate = [SELECT id, FirstName, lastName, Title, Company FROM Lead WHERE id = :leadID];
delete potentialCandidate;
return null;
}
似乎我无法将leadID
传递给addToRecruits()
方法。你知道为什么会这样吗?
更新
我可以设法解决它。我没有使用SOQL查询,而是采用这种方式:
public String leadID { get; set; }
public PageReference addToRecruits() {
Lead candidate=new Lead(id=leadID);
....
}
答案 0 :(得分:1)
看起来臭名昭着的平台错误?其中apex:param值并不总是通过apex:commandButton发送给控制器(尽管它们是用apex:commandLink发送的)。
Jeff Douglas总结了这个问题的简单概述和可能的解决方法:http://blog.jeffdouglas.com/2010/03/04/passing-parameters-with-a-commandbutton/
答案 1 :(得分:0)
将“rerender”属性添加到apex:commandButton并且它将开始工作 - 类似于
<apex:commandButton rerender="myForm" action="{!addToRecruits}" value="Recruit">
答案 2 :(得分:0)
有一种方法可以将参数传递给控制器,但它也会使用commandLink。我的意思是我们需要使用
例如:
<apex:commandLink action="{!applyNow}" id="applybuttonLink" style="text-decoration:none">
<apex:commandButton value="Apply now"/>
<apex:param name="passId" assignTo="{!passId}" value="{!Vac.id}"/>
</apex:commandLink>
控制器:
public String vacancyId{get;set;}