【Salesforce】Subscript value 3 not valid. Must be between 0 and 2

【Salesforce】Subscript value 3 not valid. Must be between 0 and 2

Apex内で作成したリストをVisualforceで表示する際に、このようなエラーが発生しました。

Subscript value 3 not valid. Must be between 0 and 2

添字は0から2を指定してね、とのことです。

メッセージは違いますが、Apexコード内でも似たようなエラーがありますね。

例えば、こんなソースです。

Visualforce側で、リストのindexを固定値で指定しています。

<apex:outputText value="{!StrList[0]}" /><br/>
<apex:outputText value="{!StrList[1]}" /><br/>
<apex:outputText value="{!StrList[2]}" /><br/>
<apex:outputText value="{!StrList[3]}" /><br/>
<apex:outputText value="{!StrList[4]}" /><br/>

Apexコード側ではリストを作って返していますが、リストの中身はVisualforce側の添字よりも小さいことが分かります。

public getStrList(){

    List<String> strList;
    
    // リストの初期化
    strList = new List<String>();
    // 項目の追加
    for(Integer i = 0; i < 3; i++){
        
        strList.add(String.valueOf(i));
    }
    
    return strList;
}

Visualforceでリストを使用する際は

<apex:repeat value="{!StrList}" var="str">
  <apex:outputText value="{!str}" /><br/>
</apex:repeat>

のようにすることが多いですよね。

ただ、今回はリスト内の項目を連続で表示するわけではなかったため、仕方が無い部分もありました。

それであればMapにするか個別に変数を作る方が良い気がしますが、そんな時間はなかったです。

No comments.

コメントを残す

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