[Salesforce]Bad Request

Bad Request

400 Bad Request

HyperText Transfer Protocol (HTTP) の 400 Bad Request レスポンスステータスコードは、何らかのクライアント側のエラーであると分かったために、サーバーがそのリクエストを処理しない (できない) ことを表します (例えば、リクエストの構文が正しくない、リクエストメッセージのフレーミングが無効、リクエスト経路に偽りがあるなど)。

[Postman]Postman multipart/form-data形式でファイルをPostする方法

Postman multipart/form-data形式でファイルをPostする方法

・任意のリクエストを作成して「Body」をクリックし「form-data」選択する。

・任意のキー名を入力する。

・入力したキー名と同じ枠の右側にマウスカーソルを持ってゆくとデフォルトで「Text」と表示されたプルダウンメニューが表示されるのでクリックする。

・「File」を選択する。

・「VALUE」の「Select Files」をクリックしてPostしたい任意のファイルを選択してPostする。

[Salesforce]Visualforceページで静的リソース参照

Visualforceページで静的リソース参照

Visualforce マークアップで静的リソースを参照する方法は、単独ファイルを参照するのか、またはアーカイブ (zip ファイルや .jar ファイルなど) に含まれるファイルを参照するのかによって異なります。

単独ファイルを参照するには、差し込み項目として $Resource.<resource_name> を使用します。このとき、<resource_name> は、リソースをアップロードしたときに指定した名前です。次に例を示します。

<apex:image url="{!$Resource.TestImage}" width="50" height="50"/>

又は

<apex:includeScript value="{!$Resource.MyJavascriptFile}"/>

アーカイブ内のファイルを参照するには、URLFOR 関数を使用します。最初のパラメータには、そのアーカイブをアップロードしたときに指定した静的リソース名を、第 2 パラメータには、アーカイブ内での目的ファイルへのパスを指定します。たとえば、次のとおりです。次に例を示します。

<apex:image url="{!URLFOR($Resource.TestZip,
                  'images/Bluehills.jpg')}" width="50" height="50"/>

又は

<apex:includeScript value="{!URLFOR($Resource.LibraryJS, '/base/subdir/file.js')}"/>

[Salesforce]StandardSetControllerテストクラス

StandardSetControllerテストクラス

Apexクラス

/*
testページコントローラ
*/
public with sharing class testController {

    //testページへ渡す対象Idリスト
    public String testIdList { get;set; }

    //コンストラクタ
    public testController( ApexPages.StandardSetController controller ){

        //初期化
        List<test__c> testList = new List<test__c>();
        Set<Id> testIdSet = new Set<Id>();
        this.testIdList =  '';

        //testページで選択済みIdリスト取得
        for(test__c testObj : (List<test__c>) controller.getSelected()){
            testIdSet.add(testObj.Id);
        }

        //testページで選択済みリスト取得
        testList = gettestList(testIdSet);
        System.debug('testList.size() : ' + testList.size());

        //testページへ渡す対象Idリスト取得
        Integer cnt = 1;
        if(testList.size() > 0){
            for(test__c testObj : testList){
                if(cnt == 1){
                    this.testIdList += String.valueOf(testObj.id);
                }
                else{
                    this.testIdList += ',';
                    this.testIdList += String.valueOf(testObj.id);
                }
                cnt += 1;
            }
        }
        System.debug('this.testIdList : ' + this.testIdList);

    }

    //testページで選択済みリストからtestページへ渡す対象取得
    private List<test__c> gettestList(Set<Id> testIdSet){

        return [SELECT Id
                        , test__c  // test
                FROM
                    test__c
                WHERE
                    Id IN : testIdSet
                AND
                    test__c = 'test'
                ORDER BY Id
                ];

    }
}

Apexテストクラス

/*
testページコントローラテストクラス
*/
@isTest
private class testControllerTest {

    //正常ケース
    //対象レコード数:1件
    @isTest static void UnitTest1() {

        //testレコード作成
        List<test__c> testList = new List<test__c>();
        test__c test = inserttest();
        testList.add(test);

        // VisualForceのページリファレンスを取得
        PageReference prRef = Page.test;

        // カレントページにVisalForceページをセット
        Test.setCurrentPage(prRef);

        // テスト開始
        Test.startTest();

        // StandardSetControllerのコンストラクタ
        ApexPages.StandardSetController ssc = new ApexPages.StandardSetController(testList);
        ssc.setSelected(testList);
        testController bbController = new testController(ssc);

        // テスト終了
        Test.stopTest();

    }

    //正常ケース
    //対象レコード数:2件
    @isTest static void UnitTest2() {

        //testレコード作成
        List<test__c> testList = new List<test__c>();
        test__c test1 = inserttest();
        test__c test2 = inserttest();
        testList.add(test1);
        testList.add(test2);

        // VisualForceのページリファレンスを取得
        PageReference prRef = Page.test;

        // カレントページにVisalForceページをセット
        Test.setCurrentPage(prRef);

        // テスト開始
        Test.startTest();

        // StandardSetControllerのコンストラクタ
        ApexPages.StandardSetController ssc = new ApexPages.StandardSetController(testList);
        ssc.setSelected(testList);
        testController bbController = new testController(ssc);

        // テスト終了
        Test.stopTest();

    }

    //異常ケース
    //対象レコード数:0件
    @isTest static void UnitTest3() {

        //testレコード作成
        List<test__c> testList = new List<test__c>();
        test__c test = inserttest2();
        testList.add(test);

        // VisualForceのページリファレンスを取得
        PageReference prRef = Page.test;

        // カレントページにVisalForceページをセット
        Test.setCurrentPage(prRef);

        // テスト開始
        Test.startTest();

        // StandardSetControllerのコンストラクタ
        ApexPages.StandardSetController ssc = new ApexPages.StandardSetController(testList);
        ssc.setSelected(testList);
        testController bbController = new testController(ssc);

        // テスト終了
        Test.stopTest();

    }

    //testレコード作成
    //test:test
    private static test__c inserttest(){

        test__c  test = new test__c();
        test.Name = 'test';
        test.test__c = 'test';
        insert test;

        return test;

    }

    //testレコード作成
    //test:test以外
    private static test__c inserttest2(){

        test__c  test = new test__c();
        test.Name = 'test';
        insert test;

        return test;

    }
}

[Salesforce]Apexテストクラス作成

テストメソッドは isTest アノテーションを使用して定義し、次の構文を使用します。

@isTest static void testName() {
    // code_block
}

テストメソッドは、テストクラス (isTest アノテーションが付加されているクラス) で定義されている必要があります。次のサンプルクラスは、テストメソッドが 1 つあるテストクラスの定義を示しています。

@isTest
private class MyTestClass {
    @isTest static void myTest() {
        // code_block
    }
}

[Salesforce]JSENCODE

JSENCODE

バックスラッシュ (\) などのエスケープ文字をアポストロフィー (‘) などの安全でない JavaScript 文字の前に挿入して、JavaScript で使用するテキスト文字列や差し込み項目値をエンコードします。

ページの読み込み時に JavaScript が実行され、アラートが表示されます。

<script>var ret = "foo";alert('xss');//";</script>

この場合、JavaScript が実行されないように、JSENCODE 関数を使用します。例

<script>var ret = "{!JSENCODE($CurrentPage.parameters.retURL)}";</script>

[JavaScript].shift()

.shift()

shift()メソッドは配列から最初の要素を削除して、その要素を返します。このメソッドは配列のlengthを変更します。

arr.shift()
例
var myFish = ["angel", "clown", "mandarin", "surgeon"];
console.log("myFish before: " + myFish);
var shifted = myFish.shift();
console.log("myFish after: " + myFish);
console.log("Removed this element: " + shifted);

結果
myFish before: angel,clown,mandarin,surgeon
myFish after: clown,mandarin,surgeon
Removed this element: angel