Visualforce コンポーネントに commandButton があります。予想される動作は、コントローラー メソッドが呼び出されることです。ページは更新されますが、commandButton に登録されているメソッド{!performUnlinkContact}
は呼び出されません。奇妙なことに、基本的な visualforce ページにボタンを配置すると、期待どおりにコントローラー メソッドが呼び出されますが、コンポーネントでは呼び出されません。
ここに私のコンポーネントがあります:
<apex:component >
<apex:attribute name="rk" description="RK Base Contact Data" type="Object" required="true"/>
<div class="unlinkBox">
<div class="unlinkHeader">
<div class="unlinkHeaderLeft">Wrong Contact?</div>
<div class="unlinkHeaderRight"><a href="" onclick="return hideUnlinkPanel()"><apex:image style="cursor: pointer;" value="{!$Resource.x}" alt="Close Panel" /></a></div>
</div>
<div class="unlinkBody">
<div class="unlinkBodyLeft">
Click Yes if the Contact displayed is incorrect.<br/><br/>You will be given the opportunity to link to a different Contact.
</div>
<div class="unlinkBodyRight">
<apex:outputpanel id="callMethod">
<apex:commandbutton value="Yes, this is the wrong contact" action="{!performUnlinkContact}" rerender="" status="myDisplayStatus" /> <a onclick="return hideUnlinkPanel()" style="color:blue;cursor:pointer;text-decoration:underline">No</a>
</apex:outputpanel>
<apex:actionStatus id="myDisplayStatus" startText="(performing Contact Unlink...)" stopText=""/>
</div>
</div>
</div>
</apex:component>
コントローラー拡張機能のメソッドは次のとおりです。
public PageReference performUnlinkContact() {
System.debug('==================================!!performUnlink');
if (this.thisLead.rkContactId__c != 0) {
this.thisLead.rkContactId__c = 0;
update this.thisLead;
}
return null;
}
私はセールスフォースに慣れていないので、何か間違ったことをしているに違いないと確信していますが、この問題を解決する方法を検索しても、関連する問題が見つかりません。助けてくれてありがとう。