2008-09-24 58 views
16

我有一個類,它定義了各種常量的名稱,例如JSP中的Java常量

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

我想使用scriptlet代碼如JSP 內的是使用這些常數,而不

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

似乎有在Apache unstandard標籤庫提供此功能的標記。但是,我找不到任何方式來下載這個taglib。我開始懷疑它是否已被棄用,並且功能已被移至另一個(Apache)標記庫?

有沒有人知道我可以在哪裏得到這個庫,或者如果它不可用,如果還有其他方法,我可以在不使用scriptlet代碼的情況下訪問JSP中的常量?

乾杯, 唐

回答

-3

你爲什麼要打印的常數的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> 

+1

的完整代碼如果你能改寫這個不使用Scriptlet中,你會回答我的問題。 – 2008-09-24 14:29:41

2

在應用程序啓動時,你可以添加類的常量ServletContext中,然後訪問任何JSP頁面

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

,然後訪問在JSP頁面中

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

(你可能必須爲每個常量創建getter)

+13

我真的想避免爲每個常量創建getter – 2008-09-24 14:30:17

+2

servletContext函數的setAttribute接收Object作爲值參數。你確定我們可以傳輸com.example.Constants嗎? – nhthai 2015-07-05 11:31:08

0

你想要什麼樣的功能 使用? 該標籤應該可以通過類名和字段名訪問任何公共類字段?

Scriptlets鏈接在編譯時完成,但taglib類字段訪問必須使用java API作爲運行時反射。你真的需要嗎?

0

我會在我的項目中使用jakarta-taglibs-unstandard-20060829.jar,但是,你是真的,看起來好像是not available for download anymore

我已經得到了我的pom.xml,以獲得該庫,但我認爲,因爲庫現在是在我的本地庫它只會工作(我不能在官方軟件倉庫找到它):

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

我不知道是否有另一種選擇。

我希望如此,因爲這是訪問JSP中常量的好方法。

1

貌似accessing constants in JSP (without scriptlet)

我的回答的副本是:

靜態屬性是不是在EL訪問。我使用的解決方法是創建一個非靜態變量,將其自身分配給靜態值。

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

我使用lombok來生成getter和setter,所以它非常好。你EL看起來是這樣的:

${bean.manager_role} 

http://www.ninthavenue.com.au/java-static-constants-in-jsp-and-jsf-el