18

Is there a way to use Enum values inside a JSP without using scriptlets.

e.g.

package com.example;

public enum Direction {
    ASC,
    DESC
}

so in the JSP I want to do something like this

<c:if test="${foo.direction ==<% com.example.Direction.ASC %>}">...
Swati
  • 50,291
  • 4
  • 36
  • 53
talg
  • 1,759
  • 6
  • 22
  • 30

3 Answers3

22

You could implement the web-friendly text for a direction within the enum as a field:


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

but that mixes the view and the model, although for simple uses it can be view-independent ("Ascending", "Descending", etc).

Unless you don't like putting straight Java into your JSP pages, even when used for basic things like comparisons.

JeeBee
  • 17,476
  • 5
  • 50
  • 60
5

It can be done like this I guess

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

the advantage is when we refactor it will reflect here too

Mohammed Aslam
  • 995
  • 9
  • 14
2

You can simply check against the enum value as a string:

<c:if test="${foo.direction == 'ASC'}">...
Arnoud
  • 235
  • 1
  • 4