我无法从JSP页面调用带有varargs的方法

时间:2016-01-02 12:58:38

标签: java jsp variadic-functions

我的课程DBBase在我的申请中定义如下:

public class DBBase {
    public static void close(Statement stmt) {
        try {
            if (stmt != null) stmt.close();
        } catch (Exception ex) {
            logger.error("Exception:(", ex);
        }
    }

    public static void close(ResultSet resultSet) {
        try {
            if (resultSet != null) resultSet.close();
        } catch (Exception ex) {
            logger.error("Exception:(", ex);
        }
    }

    public static void close(Connection con) {
        try {
            if (con != null) con.close();
        } catch (Exception ex) {
            logger.error("Exception:(", ex);
        }
    }

    public static void close(Object... closeable) {
        for (Object obj : closeable) {
            if (obj != null) {
                if (obj instanceof Connection) close((Connection) obj);
                else if (obj instanceof ResultSet) close((ResultSet) obj);
                else if (obj instanceof Statement) close((Statement) obj);
            }
        }
    }
}

当我从另一个类调用close方法DBBase.close(con, stmt, resSet)时,一切正常但是当我从JSP页面调用此方法时出现以下错误:

An error occurred at line: 20 in the jsp file: /admin/test.jsp
Generated servlet error:
The method close(Statement) in the type DBBase is not applicable for the arguments (Connection, Statement, ResultSet)

这是我的JSP页面:

<%@ page import="java.sql.ResultSet" %>
<%@ page import="java.sql.Statement" %>
<%@ page import="java.sql.Connection" %>
<%@ page import="db.DBBase" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%
    Connection con = null;
    Statement stmt = null;
    ResultSet resSet = null;

    try {
        // Some code here
    } catch (Exception ex) {
        ex.printStackTrace();
    } finally {
        DBBase.close(con, stmt, resSet);
    }
%>
<html>
<head>
    <title>Test JSP File</title>
</head>
<body>

</body>
</html>

我的JDK版本是1.7.0._51,语言级别为7

有什么问题?

更新

这是我的服务器和jsp配置:

Server Version: Apache Tomcat/5.5.17
Servlet Version: 2.4
JSP Version: 2.0

实际上我有JBoss 4.0.4 GA

更新

关于@AlexC的评论我必须改变我的JBoss版本才能使用varargs。

1 个答案:

答案 0 :(得分:1)

JSR-245 for JSP 2.1定义了JSP和Tomcat中varargs的使用,这是在7.x发布周期中完成的。 (请参阅http://alex-perevalov.livejournal.com/30156.htmlhttps://wiki.apache.org/tomcat/Specifications

在web.xml中(参见http://tomcat.apache.org/tomcat-7.0-doc/jasper-howto.html),如果需要限制,可以指定要支持的JSP版本。

将您的应用服务器升​​级到兼容JSP 2.1的应用服务器应该允许使用varargs。