本部長は管理ができない

Salesforceに関わっているエンジニアの技術メモ。ときどきそれ以外。

apex:commandButtonを押下して別画面を起動する

以前の記事で、apex:commandButtonを使って別画面起動が出来なかったと書いたけど、色々試したら出来た。

<apex:page controller="foo">
    <apex:form id="frmHide" target="_blank">
        <apex:commandButton id="btnHide" value="別画面起動" action="{!openPage}" style="display:none;" />
    </apex:form>
    
    <apex:form id="frmMain">
        <apex:commandButton id="btnMain" value="別画面起動" 
            onclick="document.getElementById('{!$Component.frmHide.btnHide}').click();return false;" />
    </apex:form>
</apex:page>


表示するボタンと、非表示のボタンを2つ使う。
表示するボタンは、JavaScriptで非表示のボタンを押下するだけ。
非表示のボタンがあるapex:formは、target属性を"_blank"にして、ボタン押下時に別画面起動させる。

ああ、apex:commandLinkをボタン風にするより簡単だ・・・