2008-10-02 2 views
14

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

например.

package com.example; 

public enum Direction { 
    ASC, 
    DESC 
} 

так в JSP Я хочу сделать что-то вроде этого

<c:if test="${foo.direction ==<% com.example.Direction.ASC %>}">... 

ответ

17

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

 

<%@ 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, даже если они используются для основных вещей, таких как сравнения.

1

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

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

Использование жестко закодированной строки - это плохая идея – sjain 2016-11-25 08:59:51

+0

Избегайте жестко закодированных строк. Что делать, если ваше перечисление изменено? – user2447161 2017-06-22 12:06:03

-1

Это может быть сделано, как это я думаю

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

преимуществом является то, когда мы реорганизовать переименовываются здесь