0

私は初心者で、次のように宣言されたハッシュマップを持っています

 HashMap map = new HashMap();

    map.put("code", code);
    map.put("url", evaluationTSRCode);

そして、このマップを私のモデルとビューのコントローラーでこのように渡しています

return new ModelAndView("purchaseProduct","map","map"); 

反復を使用せずにjstlを使用してjspの値コード、evaluationTSRCodeにアクセスする方法私はこのように試みますが、値を取得できませんでした。

<c:choose>
<c:when test="(${map.code} != null && ${map.code}=!"" )" >
<td>You can purchase<a href='<c:url value="${map.url}"/>'>Directly</a></td>
</c:when>
<c:otherwise>
td>You can purchase Directly</td>
</c:otherwise>
</c:choose>

この問題を解決するのを手伝ってください

前もって感謝します

4

2 に答える 2

4

JSPでマップ値にアクセスする方法は完全に間違っています。

あなたのコードには私の側からの1つの仮定があります

return new ModelAndView("purchaseProduct","map","map");

間違っているはずです

return new ModelAndView("purchaseProduct","map",map);

マップ値を反復処理する必要はありません。

例えば。コードの値にアクセスします。${map.code}jspではどこでも十分です。

またはあなたはのように使うことができます

return new ModelAndView("purchaseProduct", map);

また、JSPでこれを行う場合は、名前だけでマップ値にアクセスする必要があります。

例えば。コードの値にアクセスします。${code}jspではどこでも十分です。

これがお役に立てば幸いです。

乾杯。

于 2012-05-22T12:42:55.943 に答える
0

もう少し正しい答えは、提案どおりにマップを使用していると思いますが、コントローラーメソッドの入力で宣言され、ビュー名を持つ文字列のみを返すModelMapに追加します(私は常にこの方法を使用して、Springコントローラーでビューを参照します):

public String themethod(ModelMap model) {
  ...
  model.addAttribute("map",map);
  return "purchaseProduct";

このようにして、jsp で ${map.code} を使用できます。

さらに興味深いことに、必要に応じて、複雑なデータ構造をマップにパッケージ化してからリストにパッケージ化できます

  List<Map<String, Object>> lcli = new ArrayList<Map<String, Object>>();
  for(Cliente c:cli) {
        Map <String,Object>map  = new HashMap<String, Object>();
        int nord    = userDao.nord(c);
        map.put("cli", c);
        map.put("nord", nord);

        lcli.add(map);
    }
    mo.addAttribute("lcli", lcli);

このように、jsp では、リストの各要素を反復処理し、lcli とタグ付けして、それがマップであることを確認し、そこから、以下のようにキー/値を取得します。

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
...
<c:forEach var="itemcli" items="${lcli}">
        <a href="<c:url value='edit-client.html?id=${ itemcli.cli.id }'/>" >   ${itemcli.cli.nome}  </a>            
        ${itemcli.cli.citta}
</c:forEach>                          
于 2016-04-01T07:34:07.343 に答える