17

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
  • 45,871
  • 4
  • 36
  • 53
talg
  • 1,719
  • 6
  • 22
  • 30

3 Answers3

21

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,377
  • 5
  • 49
  • 60
4

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
  • 925
  • 8
  • 14
2

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

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