如何在JSTL中从Java类访问静态变量?

时间:2015-08-23 11:26:40

标签: java jsp jstl constants

我试图使用JSTL挂钩到Oracle数据库。我有它的工作,但不是我喜欢的方式。 (USER和PASSWORD的值在实际程序中有不同的值,但我不想公开分享它们)/

<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>

我的班级&#34; dbInfo&#34;包含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" />

我做错了什么?如果必须的话,我会使用字符串文字(它正在工作),但如果我能避免的话,我就不会发疯。

2 个答案:

答案 0 :(得分:0)

应该是

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

                       instead of 

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

因为您的静态字段名称为ALSODRIVER而不是DRIVER

答案 1 :(得分:0)

用于访问静态字段,不需要usebean

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