To nieprawda, że nie można tego zrobić, ale rozwiązanie nie jest całkowicie proste. Problem polega na tym, że EL nie konwertuje ciągu znaków, który przekazujesz jako klucz mapy, do odpowiedniego wyliczenia, więc wstawienie $ {map ['One']} nie używa stałej wyliczeniowej MyEnum.One w odnośniku do mapy.
Wpadłem na ten sam problem i nie chciałem powracać do mapy z napisem "String", więc wyzwanie w JSTL polegało na tym, jak uzyskać rzeczywiste odniesienie do użycia w wyszukiwaniu mapy.
Wymagane jest wprowadzenie stałych Enum do zakresu strony JSP, aby można było używać rzeczywistego samego Enum jako klucza. Aby to zrobić, w kontrolerze można zrobić coś takiego:
for (MyEnum e : MyEnum.values()) {
request.putAttribute(e.toString(), e);
}
Co zrobiłeś tutaj dodaje zmienne do zakresu nazwanego jako ciąg znaków do wyliczenia. (Można oczywiście uniknąć nazywania problemów przez poprzedzenie e.toSring() z jakąś wartość)
Teraz, kiedy należy wykonać następujące czynności
${map[ONE]}
Będziesz przy założeniu stałej enum jako klucz i w ten sposób odzyska odpowiednią wartość z mapy. (Zauważ brak cudzysłowów wokół jednego, że to dlatego, że odwołuje się do atrybutu poprosić w tym przypadku, który został dodany powyżej)
użyj niestandardowej funkcji el - jest to najbardziej konserwatywny sposób. – Chii