2017-03-21 1 views
-1

私はjspでサーブレットにarraylistを使用しています。jstlのarrylistを反復しているときPropertyNotFoundExceptionが発生しています

ArrayList<String> list =new ArrayList<String>(); 
list = (ArrayList<String>)request.getAttribute("iInfoType"); 

私は

<c:forEach items="<%=list %>" var="element">  
<c:out value="${element[10].id}"/> 
</c:forEach> 

配列リストを解析するためにJSTLを使ってでも、エラーPropertyNotFoundExceptionを取得しています。 私は何をすべきか

+0

完全な例外スタックトレースを送信し、スクリプトレットの使用を停止します。 JSTLは、スクリプトレットではなくJSP ELを使用します。そのスクリプトレットが存在するのは忘れてください。それらは何年も何年も何年も使用すべきではありません。 –

+0

また、変数を初期化する直前に、新しい空のリストを使用して変数を初期化するのはなぜですか?

答えて

1

ありStringにはidプロパティがありませんので、以下に示すように、あなたのJSTLを変更する必要があります。

また
<c:forEach items="list" var="element">  
<c:out value="${element}"/> 
</c:forEach> 

、あなたがc:forEachを使用している、あなたは、リストを反復処理しているので、 ${element}を使用すると、listに存在する要素が得られます。

もう一つのポイントは、listが既にサーブレット/コントローラによって要求スコープに設定されている場合(すなわち、あなたが直接items="list"listにアクセスすることができる)上記のように、あなたはスクリプトレットを使用する必要がないことです。

あなたがlistindexにアクセスしたい場合は、以下のように、あなたはvarStatusを使用することができます。

<c:forEach items="list" var="element" varStatus="myList">  
    <c:out value="${myList.index}"/> 
</c:forEach> 

をスクリプトレットを使用してJSPページで、ベストプラクティスではありませんので、私はそれらを使用しないようお勧めJSPのベストプラクティスの詳細については、hereをご覧ください。 HTML文書の

は、Javaコード(またはスクリプトレット)のビットを埋め込む が、彼らは、Java言語を知って ていないかもしれないので、すべてのHTMLコンテンツの開発者には適していないことがあります。リンクから、以下のキーポイントは、私が追加されましたその構文を学ぶ気にはなりません。

+0

指定されたインデックスで要素にアクセスする方法は? –

+0

だから、 'list'を反復したくないのですか? – developer

+0

私はしたい。それぞれの要素をインデックスとともに使用したいと考えています。 –

関連する問題