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