Salesforce apex:commandButton不执行该操作

时间:2018-01-31 11:12:34

标签: salesforce apex commandbutton

所以我在页面中有这个:

< apex:commandButton id="songdbabc" value="Synch from song db" action="{!sendingSign}" /> 

这在控制器中:

public PageReference  sendingSign(){
    System.debug(' message ');
    return null;
}

但是每次按下按钮,“&#34; Log&#34;”中都没有任何消息。我的意思是行动没有执行,任何想法?

3 个答案:

答案 0 :(得分:0)

你有另一个同名的变量或函数吗?我的意思是public String sendingSign {get; set;}或者public String getSendingSign()?这些会“影响”你的动作功能。在<apex:page>标记中是否有多个控制器扩展名?他们将从右到左检查匹配的函数名称(所以如果你有几个类,那么它可能会调用你没有看过的类的匹配)

打开浏览器的JS控制台/网络面板,查看点击按钮时是否记录了任何流量...

答案 1 :(得分:0)

尝试将您的sendingSign方法更改为:

public void sendingSign(){
    System.debug(' message ');
}

重新检查你的日志。

答案 2 :(得分:-1)

编辑:已修复!从我的扩展程序中删除了“静态”变量;清除所有不良行为。

原始: 我只需要建立一个stackoverflow帐户,这样我就可以在这里泄气。我遇到了同样的问题,发现如果我在同一页面上包含一个选择列表,它只会跳过我的操作。我从来没有这个问题。

此页面运行操作,但不包括我想要的选择列表:

<apex:page standardController="Checklist_Template_Item__c" recordSetVar="Checklist_Template_Items__r" extensions="ChecklistTemplateItemMassApply">
<apex:form >
    <apex:pageBlock >
        <apex:commandButton action="{!myCustomAction}" value="Append/Remove" />
        <apex:commandButton action="{!cancel}" value="Cancel"/>
        <apex:variable value="{!appendValue}" var="appendValue"/>
        <apex:variable value="{!selection}" var="selection"/>
        <apex:pageBlockSection >                    
            Include your selected items for select machine models.
            <apex:inputText value="{!appendValue}"/>


        </apex:pageBlockSection>
    </apex:pageBlock>
</apex:form>

此页面完全跳过该操作,但包含我的选择列表:

<apex:page standardController="Checklist_Template_Item__c" recordSetVar="Checklist_Template_Items__r" extensions="ChecklistTemplateItemMassApply">
<apex:form >
    <apex:pageBlock >
        <apex:commandButton action="{!myCustomAction}" value="Append/Remove" />
        <apex:commandButton action="{!cancel}" value="Cancel"/>
        <apex:variable value="{!appendValue}" var="appendValue"/>
        <apex:variable value="{!selection}" var="selection"/>
        <apex:pageBlockSection >                    
            Include your selected items on certain machine models.
            <apex:inputText value="{!appendValue}"/>
            <apex:pageBlockSectionItem >
                <apex:outputText value="Why tho"/>
                <apex:selectList size="1" value="{!selection}" required="true">
                    <apex:selectOptions value="{!applyRemove}"/>
                </apex:selectList>
            </apex:pageBlockSectionItem>

        </apex:pageBlockSection>
    </apex:pageBlock>
</apex:form>

是否具有页面构造函数,包括选择列表时,动作不会运行:

扩展v1:

public without sharing class ChecklistTemplateItemMassApply{

public static String appendValue{get;set;}
public static String selection{get;set;}
public static List<SelectOption> applyRemove{get;set;}

ApexPages.StandardSetController setCon;

public ChecklistTemplateItemMassApply(ApexPages.StandardSetController myController){
    setCon = myController;

    List<String> addList = new List<String>{'Applies_To__c'};
    setCon.addFields(addList);

    system.debug('addList = '+addList);

    applyRemove = new List<SelectOption>();
    applyRemove.add(new SelectOption('','--None--'));
    applyRemove.add(new SelectOption('Include','Include'));
    applyRemove.add(new SelectOption('Remove','Remove'));

}

public ApexPages.pageReference myCustomAction(){
    system.debug('hey');

    PageReference returnPage = new PageReference(ApexPages.currentPage().getParameters().get('retURL'));
    system.debug('returnPage = '+returnPage);

    return returnPage;
}
}

扩展V2:

public without sharing class ChecklistTemplateItemMassApply{

public static String appendValue{get;set;}
public static String selection{get;set;}
public static List<SelectOption> applyRemove{get;set;}

ApexPages.StandardSetController setCon;

public ChecklistTemplateItemMassApply(ApexPages.StandardSetController myController){
    setCon = myController;

    List<String> addList = new List<String>{'Applies_To__c'};
    setCon.addFields(addList);

    system.debug('addList = '+addList);

    applyRemove = new List<SelectOption>();
    applyRemove.add(new SelectOption('','--None--'));
    applyRemove.add(new SelectOption('Include','Include'));
    applyRemove.add(new SelectOption('Remove','Remove'));

}

public void ApexPages.pageReference myCustomAction(){
    system.debug('hey');
}
}