JSP访问非jdk提供的静态字段/方法(JSP EL 3.0)

时间:2014-07-24 14:42:06

标签: java jsp java-ee el tomcat8

previous question中,我学习了如何提供我的JSP(在Tomcat 8.0.9上运行)访问java.lang类的静态字段和方法,甚至是{{1}中的类。使用这样的代码打包:

java.time

现在我可以在我的JSP中执行:package test; import javax.el.ELContextEvent; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.annotation.WebListener; import javax.servlet.jsp.JspFactory; @WebListener public class Config implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent event) { JspFactory.getDefaultFactory().getJspApplicationContext(event.getServletContext()).addELContextListener((ELContextEvent e) -> { e.getELContext().getImportHandler().importPackage("java.time"); }); } @Override public void contextDestroyed(ServletContextEvent event) {} } 。但是,当我尝试将自己的类导入el上下文时:

${LocalDate.now{}}

给出test.LocalDateUtils类:

@Override
public void contextInitialized(ServletContextEvent event) {
  JspFactory.getDefaultFactory().getJspApplicationContext(event.getServletContext()).addELContextListener((ELContextEvent e) -> {
    e.getELContext().getImportHandler().importPackage("java.time");
    e.getELContext().getImportHandler().importClass("test.LocalDateUtils");
  });
}

使用以下命令从JSP调用时

package test;

import java.time.LocalDate;

public final class LocalDateUtils {

  public static boolean isToday(LocalDate date) {
    return LocalDate.now().equals(date);
  }
}

我遇到了异常:

${LocalDateUtils.isToday(LocalDate.now())}

如何将自定义类添加到ImportHandler的类路径中,以便找到并解析它们?

0 个答案:

没有答案