JSP中的Java常数

时间:2020-03-06 14:39:49  来源:igfitidea点击:

我有一个定义各种常量名称的类,例如

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

我想在JSP中使用这些常量,而不使用Scriptlet代码,例如:

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

Apache非标准taglib中似乎有一个提供此功能的标签。但是,我找不到任何下载此taglib的方法。我开始怀疑它是否已被弃用,功能是否已移至另一个(Apache)标记库?

有谁知道我可以在哪里获得该库,或者是否不可用,是否还有其他方法可以在不使用scriptlet代码的情况下访问JSP中的常量?

干杯,
大学教师

解决方案

为什么要在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>

在应用程序启动时,可以将Constants类添加到ServletContext,然后在任何jsp页面中访问它。

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

然后在一个jsp页面中访问它

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

(我们可能必须为每个常量创建吸气剂)

我们要使用哪种功能?
该标签是否可以通过类名和字段名访问任何公共类字段?

Scriptlet链接在编译时完成,但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中访问常量的好方法。