【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.