在Tomcat 8中无法使用EL访问JSP中的静态字段

时间:2015-03-10 19:42:13

标签: java jsp tomcat servlets el

我试图在我的JSP文件中使用EL在Tomcat 8容器中访问我的java文件中的静态字段,但是收到错误(如下所示)。

Tomcat8是否支持EL 3.0?如果是,那么我错过了什么?

AppConstants.java

package com.study.el;

public final class AppConstants {

    public static final String NAME = "abc";

    private AppConstants() {
    }
}

AppContextListener.java

package com.study.el;

@WebListener
public class AppContextListener implements ServletContextListener {

    private ServletContext appContext;

    @Override
    public void contextInitialized(ServletContextEvent event) {
        JspFactory.getDefaultFactory().getJspApplicationContext(event.getServletContext()).addELContextListener(new ELContextListener() {
            @Override
            public void contextCreated(ELContextEvent event) {
                event.getELContext().getImportHandler().importClass("com.study.el.AppConstants");
            }
        });
    }


    @Override
    public void contextDestroyed(ServletContextEvent contextEvent) {
        //nothing to implement
    }
}

的index.jsp

<!DOCTYPE html>
<html>
    <head>
        <title>Start Page</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <h1>Hello World!</h1>
        <h1>Hello ${AppConstants.NAME}</h1>
    </body>
</html>

错误日志:

javax.el.ELException: The class [com.study.el.AppConstants] could not be imported as it could not be found
javax.el.ImportHandler.importClass(ImportHandler.java:114)

2 个答案:

答案 0 :(得分:0)

但是如果你试图改变这个语句&#34;私有ServletContext appContext;&#34;到&#34; public ServletContext appContext;&#34;

答案 1 :(得分:0)

现在你尝试导入你的课程:

<%@ page import=”your_package.your_class_name” %>