@mega244

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

🔰Thymeleafにおいてmapのインデックス番号をキー指定する方法

Thymeleaf上でmapのインデックス番号をキー指定する方法がわかりません

初めて質問させていただきます。
javaコントローラーから以下のようなmapが渡された場合、
mapの値をインデックス番号からキー指定して取得する方法がわかりません。
(map.valueでの方法ではなく、キー指定する方法です。)

@Controller
public class Sample {
   @GetMapping("/")
   public String sampleA (Model model) {
     Map<Integer, String> map = new LinkedHashMap<>();
     map.put(0, "a");
     map.put(1, "b");
     map.put(2, "c");

     model.addAttribute("map", map);
     return "index";
   }
}

試したこと1

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
  <body>
   <th:block th:each="map, stat : ${map}">
    <p>
     <span th:text="${map.get(stat.index)}"></span>
    </P>
  </body>
</html>

発生しているエラー

Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1004E: Method call: Method get(java.lang.Integer) cannot be found on type java.util.LinkedHashMap$Entry

試したこと2

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
  <body>
   <th:block th:each="map, stat : ${map}">
    <p>
     <span th:text="${map[stat.index])}"></span>
    </P>
  </body>
</html>

発生しているエラー

Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1027E: Indexing into type 'java.util.LinkedHashMap$Entry<?, ?>' is not supported

ご教示お願いいたします。

0 likes

1Answer

<th:block th:each="map, stat : ${map}">

この map がそれぞれ何に対応しているのかを考えてみてください。

1Like

Comments

  1. @mega244

    Questioner

    ご返信ありがとうございます。
    コントローラから渡されたmapにget(key)をすることで無事取得できました。
    名前を同じにしたのが混乱の原因だったようです。
    ありがとうございました。

Your answer might help someone💌