Перечисление внутри JSP [дубликат]
Вопрос
На этот вопрос уже есть ответ здесь:
- Как ссылаться на константы в EL? 12 ответов
Есть ли способ использовать значения Enum внутри JSP без использования скриптлетов?
например ,
package com.example;
public enum Direction {
ASC,
DESC
}
итак, в JSP я хочу сделать что-то вроде этого
<c:if test="${foo.direction ==<% com.example.Direction.ASC %>}">...
Решение
Вы могли бы реализовать удобный для интернета текст для указания внутри перечисления в виде поля:
<%@ 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-страницах, даже когда она используется для базовых вещей, таких как сравнения.
Другие советы
Вы можете просто свериться со значением enum в виде строки:
<c:if test="${foo.direction == 'ASC'}">...
Я думаю, это можно сделать вот так
<c:set var="ASC" value="<%=Direction.ASC%>"/>
<c:if test="${foo.direction == ASC}"></c:if>
преимущество в том, что когда мы проведем рефакторинг, он и здесь переименуется