Как ссылаться на константы в EL? - PullRequest
101 голосов
/ 17 сентября 2010

Как вы ссылаетесь на константу с EL на странице JSP?

У меня есть интерфейс Addresses с константой с именем URL. Я знаю, что могу сослаться на это с помощью скрипта, набрав: <%=Addresses.URL%>, но как мне это сделать, используя EL?

Ответы [ 12 ]

2 голосов
/ 30 декабря 2014

Даже зная, что немного поздно, и даже зная, что это немного взломать - я использовал следующее решение для достижения желаемого результата.Если вы любитель Java-Naming-Conventions, советую прекратить читать здесь ...

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

public class PERMISSION{
    public static class PAGE{
       public static final Long SEE = 1L; 
       public static final Long EDIT = 2L; 
       public static final Long DELETE = 4L; 
       ...
    }
}

можно использовать из java как PERMISSION.PAGE.SEE для получения значения 1L

Чтобы добиться аналогичной возможности доступа из EL-выражений, я сделал это: (Если тамэто бог кодирования - надеюсь, он простит меня: D)

@Named(value="PERMISSION")
public class PERMISSION{
    public static class PAGE{
       public static final Long SEE = 1L; 
       public static final Long EDIT = 2L; 
       public static final Long DELETE = 4L; 
       ...

       //EL Wrapper
       public Long getSEE(){
           return PAGE.SEE;
       }

       public Long getEDIT(){
           return PAGE.EDIT;
       }

       public Long getDELETE(){
           return PAGE.DELETE;
       }
    }

    //EL-Wrapper
    public PAGE getPAGE() {
        return new PAGE();
    }
}

наконец, EL-выражение для доступа к тому же Long становится: #{PERMISSION.PAGE.SEE} - равенство для Java и EL-Access,Я знаю, что это вне какого-либо соглашения, но оно прекрасно работает.

0 голосов
/ 17 августа 2016

Существует обходной путь, который не совсем то, что вам нужно, но позволяет вам практически одинаково активировать прикосновения к скриптлетам в минимальной степени.Вы можете использовать скриптлет для помещения значения в переменную JSTL и использовать чистый код JSTL позже на странице.

<%@ taglib prefix="c"       uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page import="com.whichever.namespace.Addresses" %>
<c:set var="ourUrl" value="<%=Addresses.URL%>"/>
<c:if test='${"http://www.google.com" eq ourUrl}'>
   Google is our URL!
</c:if>
...