Это не совсем верно, что вы не можете сделать это, но решение не совсем простое. Проблема в том, что EL не преобразует передаваемую вами строку в качестве ключа карты в соответствующее для вас перечисление, поэтому при установке $ {map ['One']} не используется константа перечисления MyEnum.One при поиске карты.
Я столкнулся с той же проблемой и не хотел возвращаться к работе с картой со строковым ключом, поэтому проблема была в JSTL, как получить фактическую ссылку на перечисление для использования при поиске карты.
Требуется ввести константы Enum в область действия JSP, чтобы вы могли затем использовать сам Enum в качестве ключа. Для этого в контроллере вы делаете что-то вроде этого:
for (MyEnum e : MyEnum.values()) {
request.putAttribute(e.toString(), e);
}
Что вы сделали здесь, так это добавили переменные в область видимости, названную строковым представлением перечисления. (Конечно, вы можете избежать проблем с именами, добавив в e.toSring () некоторое значение)
Теперь, когда вы делаете следующее
${map[ONE]}
Вы будете использовать фактическую константу перечисления в качестве ключа и, следовательно, получите правильное соответствующее значение с карты. (обратите внимание, что вокруг ONE нет кавычек, потому что в этом случае вы ссылаетесь на атрибут запроса ONE, который был добавлен выше)