2011-06-24 11 views
0

これは他の質問とよく似ていますが、誰も文字列キーを扱っていません。だからここに行く。JSTLの文字列キーによるツリーマップエントリへのアクセス

カテゴリIDをキーとするカテゴリ名のセットを持つTreeMapがあります。 IDは数値(文字列)です。

私はそのようにように、ページにそれを公開し、値でのTreeMapを構築:

<% 
Map categories = new TreeMap(); 
... 
String categoryId = ...; 
String categoryName = ...; 
categories.put(categoryId, categoryName); 
... 
pageContext.setAttribute("categories", categories); 
%> 

その後、私は、カテゴリに割り当てられている一連の項目を反復処理します。各アイテムには、それが割り当てられたカテゴリのIDを含む.categoriesコレクションがあります。名前を表示したいので、次のようにします:

<c:forEach items="${item.categories}" var="catId"> 
    ${categories[“${catId}”} 
</c:forEach> 

残念ながら、これは何も出ません。 NOR ${categories["${catId}"].value}.

ただし、これはいない:もちろん

${categories["2"]} 

、その行が実際にアイテムデータによって駆動されていません。

私はチェックしましたが、実際には各アイテムに付いているIDはカテゴリIDに対応しています。これはデータの不一致の問題ではありません。

アイテムに関連付けられたデータにIDのみが含まれている場合、どのようにカテゴリ名に手を加えるのですか?

P.S.私はJavaプログラマではないことを言及する必要があります。ランプは私のスタイルです。したがって、クラスの変更は実際には選択肢ではありません。

答えて

1

編集:申し訳ありませんが、私は質問を誤解しました。

アンラップあなたcatId変数:

${categories[“${catId}”} 

はそれを修正する必要があること

${categories[catId]} 

でなければなりません。

+0

できません。私は各項目のカテゴリのマスターリストを表示したくありません。これはこのコードが行うものです。私は、各項目について、それが属するカテゴリーを表示したいと思います。 foreachは項目のカテゴリーを繰り返し、マスターリストと相互参照する必要があります。 – Tom

+0

私は前に運がなかったことを誓ったことがある。しかし、私はあなたのコードが動作するので、ないと思います!どうもありがとう。 – Tom

関連する問題