Подтвердить что ты не робот

Константы Java в JSP

У меня есть класс, который определяет имена различных констант, например

class Constants {
    public static final String ATTR_CURRENT_USER = "current.user";
}

Я хотел бы использовать эти константы в JSP без, используя код Scriptlet, например:

<%@ page import="com.example.Constants" %>
<%= Constants.ATTR_CURRENT_USER %>

В Apache unstandard есть тег, который предоставляет эту функциональность. Однако я не могу найти способ загрузить этот taglib. Я начинаю задаваться вопросом, было ли это устаревшим, и функциональность была перенесена в другую библиотеку тегов (Apache)?

Кто-нибудь знает, где я могу получить эту библиотеку, или если она недоступна, если есть какой-либо другой способ доступа к константам в JSP без использования кода сценария?

Cheers, Дон

4b9b3361

Ответ 2

При запуске приложения вы можете добавить класс Constants в servletContext, а затем получить доступ к нему на любой странице jsp

servletContext.setAttribute("Constants", com.example.Constants);

а затем получить доступ к нему на странице jsp

<c:out value="${Constants.ATTR_CURRENT_USER}"/>

(вам может понадобиться создать геттеры для каждой константы)

Ответ 3

Оказывается там другая библиотека тегов, которая обеспечивает ту же функциональность. Он также работает для констант Enum.

Ответ 4

Похож на дубликат доступа к константам в JSP (без скрипта)

Мой ответ был:

Статические свойства недоступны в EL. Обходной путь, который я использую, заключается в создании нестатической переменной, которая присваивает статическое значение.

public final static String MANAGER_ROLE = 'manager';
public String manager_role = MANAGER_ROLE;

Я использую ломбок для генерации геттера и сеттера, чтобы это было хорошо. Ваш EL выглядит следующим образом:

${bean.manager_role}

Полный код http://www.ninthavenue.com.au/java-static-constants-in-jsp-and-jsf-el

Ответ 5

Какую функциональность вы хотите использовать? Этот тег может иметь доступ к любому публичному классу по имени класса и имени поля?

Связывание сценариев, выполненное во время компиляции, но доступ к полю класса taglib должен использовать такой java API как отражение во время выполнения. Вам это действительно нужно?

Ответ 6

Я использую jakarta-taglibs-unstandard-20060829.jar в своем проекте, но, вы правда, кажется недоступен для скачивания.

У меня есть это в моем pom.xml, чтобы получить эту библиотеку, но я думаю, что она будет работать только потому, что эта библиотека теперь находится в моем локальном репозитории (я не могу найти ее в официальных репозиториях):

    <dependency>
        <groupId>jakarta</groupId>
        <artifactId>jakarta-taglibs-unstandard</artifactId>
        <version>20060829</version>
    </dependency>

Я не знаю, есть ли другая альтернатива.

Я надеюсь, что это был хороший способ получить доступ к константам в JSP.

Ответ 7

Почему вы хотите напечатать значение константы на JSP? Разумеется, вы определяете их так, чтобы в JSP вы могли извлекать объекты из сеанса и запрашивать перед их представлением?

<%@ page import="com.example.Constants" %>
<%@ page import="com.example.model.User" %>
&lt%
User user = (User) session.getAttribute(Constants.ATTR_CURRENT_USER);
%>

<h1>Welcome <%=user.getFirstName()%></h1>