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

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

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

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

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

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

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

Ваше здоровье, Дон

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
20
0
40 516
6

Ответы 6

Почему вы хотите напечатать значение константы в 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>

Если бы вы могли переписать это без использования скриптлета, вы бы ответили на мой вопрос.

Dónal 24.09.2008 18:29

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

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

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

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

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

Я действительно хочу избежать создания геттеров для каждой константы

Dónal 24.09.2008 18:30

SetAttribute функции servletContext получает объект как параметр значения. Вы уверены, что мы можем передать com.example.Constants?

nhthai 05.07.2015 14:31

где "запуск приложения"?

Vasil Valchev 22.03.2017 15:40

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

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

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

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

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

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

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

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

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

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

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

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

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

${bean.manager_role}

Полный код на https://rogerkeays.com/access-java-static-methods-and-constants-from-el

Другие вопросы по теме