Enum внутри JSP

Есть ли способ использовать значения Enum внутри JSP без использования скриптлетов.

например

package com.example;

public enum Direction {
    ASC,
    DESC
}

поэтому в JSP я хочу сделать что-то вроде этого

<c:if test = "${foo.direction ==<% com.example.Direction.ASC %>}">...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
16
0
42 429
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Вы можете реализовать удобный для Интернета текст для направления в перечислении в виде поля:


<%@ page import = "com.example.Direction" %>
...
<p>Direction is <%=foo.direction.getFriendlyName()%></p>
<% if (foo.direction == Direction.ASC) { %>
<p>That means you're going to heaven!</p>
<% } %>

но это смешивает представление и модель, хотя для простых целей оно может быть независимым от представления («По возрастанию», «По убыванию» и т. д.).

Если только вам не нравится вставлять Java прямо в ваши JSP-страницы, даже когда вы используете их для таких базовых вещей, как сравнения.

Вы можете просто проверить значение перечисления в виде строки:

<c:if test = "${foo.direction == 'ASC'}">...

Использование жестко запрограммированной строки - плохая идея

saharsh-jain 25.11.2016 11:59

Избегайте жестко запрограммированных строк. Что делать, если ваше перечисление изменилось?

user2447161 22.06.2017 15:06

Возможно, это не лучшее решение. Но это все же лучше, чем громоздкий Java-код на JSP-странице.

saidfagan 02.11.2017 16:56

Я думаю, это можно сделать так

<c:set var = "ASC" value = "<%=Direction.ASC%>"/>
<c:if test = "${foo.direction == ASC}"></c:if>

преимущество в том, что при рефакторинге это также отразится здесь

Почему ты отменил голосование? Прокомментируйте, пожалуйста, причину.

Mohammed Aslam 10.02.2018 09:48

Если это потому, что выражение JSP смотрит на принятый ответ, он также его использует

Mohammed Aslam 10.02.2018 10:09

Другие вопросы по теме