3

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" />&nbsp;&nbsp;&nbsp;&nbsp;<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;
}

私はセールスフォースに慣れていないので、何か間違ったことをしているに違いないと確信していますが、この問題を解決する方法を検索しても、関連する問題が見つかりません。助けてくれてありがとう。

4

3 に答える 3

2

返信ありがとうございます - 解決するために、基本ページに actionFunction を追加し、ボタンの onclick イベントを介してコンポーネントでこの関数を呼び出すだけでした:

ベースページのコード:

    <apex:actionFunction name="doUnlink" action="{!performUnlinkContact}" rerender="refresh" status="myStatus"/>

コンポーネントで関数を呼び出すコード:

    <input type="button" value="Yes, this is the wrong contact" onclick="doUnlink();" />

この方法は今のところうまくいっているようです。

于 2012-09-20T14:57:50.423 に答える
0

rerender=""偽の reRender コマンドを実行する方法ではないと思います。で試してみrerender="none"ます。

于 2012-09-20T10:14:28.400 に答える