2015-08-23 52 views
0

我正在嘗試使用JSTL掛接到Oracle數據庫。我有它的工作,但不是我想要的方式。 (用於用戶名和密碼的值必須在實際的程序不同的數值,但我不希望公開分享)/如何從JSTL中的Java類訪問靜態變量?

<c:set var="DRIVER" value="oracle.jdbc.OracleDriver" scope="request" /> 
<c:set var="URL" value="dbc:oracle:thin:@localhost:1521:xe" scope="request" /> 
<c:set var="USER" value="REDACTED" scope="request" /> 
<c:set var="PASSWORD" value="REDACTED" scope="request" /> 


<sql:setDataSource var="dbDataSource" driver="${DRIVER}" url="${URL}" 
    user="${USER}" password="${PASSWORD }" /> 

所以它的工作,但我不喜歡使用這些字符串文字。我在另一個Java類中設置了一些靜態final int變量,它們保存這些值,以便在需要時可以在一個位置更改它們。我無法弄清楚如何在我的JSP文件中訪問這些常量。

我試圖用一個bean,然後設置一個JSTL變量:

<%@ page import="myPackage.dbInfo" %> 
<jsp:useBean id="dbInfoBean" scope="request" class="myPackage.dbInfo"></jsp:useBean> 

我的班「DBINFO」包含了DRIVER變量的定義如下。

public static final String ALSODRIVER = "oracle.jdbc.OracleDriver"; 

最後取代了第一這些領域的作爲,例如:

<c:set var="DRIVER" value="${dbInfoBean.DRIVER}" scope="request" /> 

當我嘗試運行JSP,這是行不通的。我收到錯誤:

org.apache.jasper.JasperException: An exception occurred processing JSP page /authorize_registrations.jsp at line 13 

12: 
13: <c:set var="DRIVER" value="${dbInfoBean.ALSODRIVER}" scope="request" /> 
14: <c:set var="URL" value="dbc:oracle:thin:@localhost:1521:xe" scope="request" /> 
15: <c:set var="USER" value="REDACTED" scope="request" /> 
16: <c:set var="PASSWORD" value="REDACTED" scope="request" /> 

我在做什麼錯?如果必須的話,我會使用字符串文字(正在工作),但是如果我可以避免的話,我並不是瘋狂的。

+0

答案有沒有幫助? –

+0

是的,謝謝。我忘了回到它現在。我不熟悉這個主板上的UI ....有沒有一個按鈕,我應該點擊「接受」它? – mstabosz

回答

0

應該

<c:set var="DRIVER" value="${dbInfoBean.ALSODRIVER }" scope="request" /> 

         instead of 

    <c:set var="DRIVER" value="${dbInfoBean.DRIVER }" scope="request" /> 

爲您的靜態字段名ALSODRIVERDRIVER

0

用於訪問靜態字段不需要useBean的

<c:set var="DRIVER" value="${dbInfo.ALSODRIVER }" scope="request" />