【Salesforce】VisualforceページへPOSTを送信する

【Salesforce】VisualforceページへPOSTを送信する

Visualforceページへパラメータを渡したい場合、一般的にはURLパラメータを使用します。

別のページへPOSTによって遷移したい場合は、コントローラを共有する必要があります。

https://help.salesforce.com/articleView?id=000006133&language=ja&type=1

上のURLを読んでVisualforceページにはPOSTを送信してもパラメータを取得できないと思っていました。

ということで、実験です。

POSTを送信するページ

<apex:page >

<form id="SubmitForm" action="/apex/GetUrlParams" method="post" >

<div>
      <input type="text" id="Text1" name="Text1" value="あいうえお" />
      <input type="text" id="Text2" name="Text2" value="かきくけこ" />
    </div>


<div>
      <input type="submit" value="送信" />
    </div>

  </form>

</apex:page>

POSTの送信先ページ

<apex:page controller="GetUrlParamsController">
  <apex:form >
    <apex:repeat value="{!UrlParamKeySet}" var="key" >

      <div>
        <apex:outputText value="{!key}:{!UrlParamMap[key]}" />
      </div>

    </apex:repeat>
  </apex:form>
</apex:page>

送信先のコントローラ

public with sharing class GetUrlParamsController{

    /**
     * URLパラメータを表示する
     */
    public Map<String, String> getUrlParamMap(){
        
        return ApexPages.currentPage().getParameters();
    }

    /**
     * URLパラメータのKeySetを取得する
     */    
    public Set<String> getUrlParamKeySet(){
        
        return ApexPages.currentPage().getParameters().keySet();
    }
}

送信元のページから2つの値を送信し、送信先のコントローラで取得しています。

コントローラで取得することが出来ないのであれば表示されないと思いましたが、実際には画面に表示されました。

PageReferenceを取得すればgetUrlParameters()で取得できるんですね。

No comments.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です