0

假设我有一个页面代码:

       <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;
    }

看来我不能传递leadIDaddToRecruits()方法。你知道为什么会这样吗?

更新:

我可以设法解决它。我没有使用 SOQL 进行查询,而是采用了这种风格:

public String leadID { get; set; }
public PageReference addToRecruits() {

    Lead candidate=new Lead(id=leadID);
    ....
}
4

3 回答 3

1

看起来像臭名昭著的平台错误?其中 apex:param 值并不总是使用 apex:commandButton 发送到控制器(尽管它们是使用 apex:commandLink 发送的)。

Jeff Douglas 在此处总结了该问题和可能的解决方法的简单概述:http: //blog.jeffdouglas.com/2010/03/04/passing-parameters-with-a-commandbutton/

于 2013-01-03T10:22:14.760 回答
0

将“重新渲染”属性添加到 apex:commandButton 并且它将开始工作 - 类似于 <apex:commandButton rerender="myForm" action="{!addToRecruits}" value="Recruit">

于 2013-01-09T10:39:51.843 回答
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;} 
于 2014-07-23T09:54:58.917 回答