2019年2月

1/2ページ

VisualforceでJavaScriptを共通化

  • 2019.02.26

VisualforceでJavaScriptを共通化 複数のVisualforceで同じようなJavaScriptでの処理を行いたい場合は、共通のVFページにJavaScriptを定義することで関数を共通化することができます。 呼び出しページでは、apex:includeタグのpageName属性で共通VFページを指定します。 サンプルコードは、以下となります。 呼び出しページ 共通ページ 参考 https://developer.salesforce.com/docs/atlas.ja-jp.pages.meta/pages/pages_compref_include.htm

複数Visualforceページ間で値の引き継ぎ

  • 2019.02.25

複数Visualforceページ間で値の引き継ぎ Visualforceでページを遷移する際に値を引き継ぐ2つの方法をサンプルコードベースで説明します。 ビューステート 複数のVFで同一のコントローラを使用することで、PageReferenceにより遷移するとビューステートの項目を引き継ぐことができます。 サンプルコードでは、TransferController.clsのconfirmメソッドでTest_TransferToState.pageのPageReferenceを返して遷移している部分になります。 Getパラメータ 複数のVFでコントローラを分割する場合には、URLのGetパラメータを使用することで項目を引き継ぐことができます。 サンプルコードでは、TransferController.clsのnextメソッドでTest_TransferToParam.pageのPageReferenceにpr.getParameters().put(”,”)で値を設定し、遷移して受けるVFのコントローラ(TransferReceiveController.cls)でApexPages.currentPage().getParameters().get(”)により値を取得します。 サンプルコード 補足 こちらにもアップしてます。 https://github.com/yhayashi30/visualforce-transfer-sample.git

VSCodeでGradleを使い、Javaをビルド→ランするまで

  • 2019.02.24

概要 本記事は、タイトルの通り「VSCodeでGradleを使い、Javaをビルド→ランするまで」の手順を簡潔にまとめます。 ※Macを使用する前提ですのでご了承ください。 Gradleとは https://ja.wikipedia.org/wiki/Gradle GradleはApache AntやApache Mavenのコンセプトに基づくオープンソースビルド自動化システムであり、プロジェクト設定の宣言にはApache Mavenが利用するXML形式ではなくGroovyベースのドメイン...

sforce.oneオブジェクトによるLightning Experienceでのページ遷移

  • 2019.02.23

sforce.oneオブジェクトによるLightning Experienceでのページ遷移 Visualforceページはページ遷移する際には通常、遷移先のVFページを指定したPageReferenceをApexから返すことで遷移先へリダイレクトして遷移をさせます。 場合によってはJavaScriptのロジックでページを遷移させる際には、location.hrefでVFページのURLを指定して遷移させる方法もあります。 Lightning Experienceに埋め込まれたVisualforceページでは、location.hrefを使用した遷移は下記の通り推奨されておらず、sforce.oneを使うように記載されております。 window.location を直接設定しない これだけ言えば大丈夫でしょうか。この理由は簡単です。Lightning Experience では、ページに設定する window.location がないためです。Visualforce の「コンテナ」や、iframe でラップされること、Lightning Experience が単一ページアプリケーション (SPA) であることなどはすでに説明しましたが、この点も追記しておく必要があります。Visualforce の iframe は window.location 値に直接アクセスできず、したがってこの値を設定することができません。コードがこの設定に依存している場合、そのコードは壊れます。つまり、window.location を設定してナビゲーションを起動するアクションによって、意図する移動先へのナビゲーションが停止します。 location.hrefは、現状Lightningでも動作しますが、いつサポートされなくなるかわからない点と、ブラウザの戻るを使った時の挙動が正しくならない可能性がある点等が考えられるので、Lightningで動作させるVFのページ遷移をJSで実装する際はsforce.oneオブジェクトを使用しましょう。 なお、sforceを使った遷移をいくつか動作検証したソースコードは下記になります。 https://github.com/yhayashi30/test-sforce-one 参考 sforce.one オブジェクトを使用したナビゲーションおよびメッセージ https://developer.salesforce.com/docs/atlas.ja-jp.salesforce1.meta/salesforce1/salesforce1_dev_jsapi_sforce_one.htm ナビゲーションの管理 https://trailhead.salesforce.com/ja/content/learn/modules/lex_dev_visualforce/lex_dev_visualforce_navigation

Lightning Experience or Classicを各レイヤーで判定する方法

  • 2019.02.19

Lightning Experience or Classicの各レイヤーでの判定方法 VisualforceやApexなどのLightning Experience(以下ではLEXとします)とClassicのどちらからも呼び出される各レイヤーでの処理中で判定する方法を紹介します。 クライアント(Visualforce) 特にVisualforce等でLEXとClassicのどちらからも呼び出される場合に、どちらのモードで動作しているかを判断するスクリプトは、以下となります。 サーバー(Apex,SOQL) 利用しているモードを判定 ApexでSOQLを発行することによりLEXとClassicのどちらを利用しているかを判定する方法は以下となります。 Lightningユーザ権限の有無を判定 ApexでSOQLを発行することによりLightningユーザ権限を保持しているかを判定する方法は以下となります。 ※正確には、付与されている権限セットがあれば、その権限セットの同一カラムを参照する必要もあります。 メタデータ 組織でLEXが有効化されているかを判定する方法は以下となります。 true→有効、false→無効となります。

VisualforceでAjaxによるApex呼び出し後のJSでView Stateを参照する方法

  • 2019.02.18

VisualforceでAjaxによるApex呼び出し後のJSでView Stateを参照するサンプルコード View Stateとは、Apexコントローラの状態やVisualforceページの状態をサーバーリクエスト間も保持するための、Visualforceページ内に暗号化されたhiddenのinputフィールドのことです。このフィールドはapex:formタグがページ上にある場合のみ生成されます。 本サンプルコードでは、タイトルの通りAjaxによるApex呼び出し(apex:actionFunctionやapex:actionFunction等)のoncompleteでコールバックしてJSの関数を呼び出した際に、JS上でView Stateの値を参照したい場合のものになります。

Salesforceログインをショートカットする

  • 2019.02.17

Salesforceログインのショートカット 小ネタ Salesforceの開発に関わる人は、様々な組織やSandboxを業務で使用することになると思います。 小ネタではありますが、このログインをURLにユーザ名とPWを含んだ形で保存(ブックマーク)しておくことでアクセスをショートカットできるようになります。   <本番組織> https://login.salesforce.com/?un=<ユーザ名>&pw=<Password> <Sandbox> https://test.salesforce.com/?un=<ユーザ名>&pw=<Password>

Apexで権限セット(PermissionSet)を付与

  • 2019.02.17

Apexで権限セットを付与 権限セットはユーザに対して付与することができ、ユーザは複数の権限セットを付与されることもできるのでオブジェクトの関係性は多対多となっております。 それらのオブジェクトの間には、PermissionSetAssignmentという連結オブジェクトがありUserとPermissionSetを紐付けてレコードを登録することで権限セットの付与ができます。 サンプルコードは以下です。 参考 https://developer.salesforce.com/docs/atlas.ja-jp.object_reference.meta/object_reference/sforce_api_objects_permissionsetassignment.htm

HerokuにWordPressをいれて独自ドメインで公開するまで

  • 2019.02.17

概要 本記事は、Heroku上にWordPressをいれて便利なHerokuのアドオンと連携して、さらに個人ブログとして使えるようにするために独自ドメインをHerokuのDNSとつなぐまでの手順をまとめたものとなります。 構成 サーバー:Heroku(Hobbyプラン *1) DB:Heroku add-on ClearDB MySQL(無料プラン) ファイルストレージ:AWS S3 キャッシュシステム:Heroku add-on Redis メール:Heroku add-on Send...

Lightning Web Componentsで取引先の検索画面を作ってみた

  • 2019.02.11

概要 Lightning Web Componentを使って何か実装してみたかったので、取引先を検索して一覧を表示する画面を作ってみました。 とりあえず検索条件を入力して結果の一覧を表示するだけものなので、そのままは使えないかもですがもう少しカスタマイズすれば使えるものになるかなと思います。 本記事は、その実装の中で気づいたことを簡単にまとめた内容となります。 デモ ソースコード https://github.com/yhayashi30/lwc-account-search 実...