Salesforce VisualforceでURLパラメータをコントローラのメンバ変数として受け取る方法

VisualforceでコントローラーでURLパラメータを取得するには

ApexPages.currentPage().getParameters().get(param_name);

とする必要があるのですが。
できれば関数呼び出しなど行わず、最初から変数に代入されている形で取得したいです。

細かい検証はしていませんが、とりあえず実現できる方法を見つけたので紹介します。
まずapex:PageにはControllerを指定せずに、
カスタムコンポーネントを一つだけ配置し
Lightningの最上位コンポーネントと同じようにこのコンポーネントに表示内容を記述し、コントローラーもこちらに指定するようにします。

Viewでは

{!$CurrentPage.parameters.param_name}

でURLパラメータを取得することができるので、
apex:attributeを使い、URLパラメータをコンポーネントに渡し、assignTo属性でコントローラの変数に渡す事で
URLパラメータをControllerの変数に直接渡すことができます。

<apex:page >  
    <c:〇〇Component
        attr_name="{!$CurrentPage.parameters.param_name}" />
</apex:page>
<apex:component controller="〇〇Controller">
    <apex:attribute name="attr_name"
                    type="ID"
                    assignTo="{!param_name}"
                    description="url parameter" />
                   <!-- 略 -->
</apex:component>
public class 〇〇Controller {
    ID  param_name{set;get;} //←URLパラメータが代入される。
}

 

広告

akatukisiden について

フリーランスプログラマ 使用言語はC++,C#とそのつなぎのC++/CLI 専門はクライアントアプリ開発
カテゴリー: Salesforce タグ: , , , , , , , , , , , , , , , , , パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中