2008-10-02 67 views
14

有没有一种方法可以在不使用scriptlet的情况下在JSP内部使用Enum值。Enum里面的JSP

例如

package com.example; 

public enum Direction { 
    ASC, 
    DESC 
} 

所以在JSP我想要做这样的事情

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

回答

17

您可以实现一个方向的枚举作为一个领域内的Web友好的文字:

 

<%@ 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> 

的好处是,当我们重构它会重命名这里也