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" %> <% 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中访问常量的好方法。