Enum all'interno di un JSP [duplicato]
Domanda
Questa domanda ha già una risposta qui:
- Come fare riferimento a costanti in EL? 12 risposte
Esiste un modo per usare i valori Enum all'interno di un JSP senza usare scriptlet.
es.
package com.example;
public enum Direction {
ASC,
DESC
}
quindi nel JSP voglio fare qualcosa del genere
<c:if test="${foo.direction ==<% com.example.Direction.ASC %>}">...
Soluzione
Potresti implementare il testo web-friendly per una direzione all'interno dell'enum come un campo:
<%@ 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>
<% } %>
ma ciò mescola la vista e il modello, anche se per usi semplici può essere indipendente dalla vista (" Ascendente " ;, " Descending " ;, etc).
A meno che non ti piaccia mettere Java direttamente nelle tue pagine JSP, anche se usato per cose di base come i confronti.
Altri suggerimenti
Puoi semplicemente controllare il valore enum come stringa:
<c:if test="${foo.direction == 'ASC'}">...
Immagino che possa essere fatto in questo modo
<c:set var="ASC" value="<%=Direction.ASC%>"/>
<c:if test="${foo.direction == ASC}"></c:if>
il vantaggio è che quando eseguiamo il refactoring verrà rinominato anche qui