更新:
Tomcat(至少从 8.0.9 开始)的 jsp-api.jar 中有一个错误。根据更改日志,它在 Tomcat 8.0.15 版本中已修复。
作为一种解决方法,在 apache-tomcat-8.0.9\lib 文件夹中将 jsp-api.jar 替换为javax.servlet.jsp-api-2.3.2-b01.jar。在eclipse中刷新项目,你会看到输出
Testing: ${Boolean.TRUE}
作为:
Testing: true
这也被确定为 GLASSFISH 中的错误。
为了访问java.lang
包外的静态字段或方法,必须将那些特定的包或类添加到 EL 上下文中(也由 BalusC在此处讨论)。
下面是一个示例,允许静态访问java.time
Web 应用程序中所有 jsp 文件的包中的类:
@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) {}
}
现在从 jsp 中返回当前的 LocalDate,例如:
${LocalDate.now()}
请注意,${java.time.LocalDate.now()}
这不起作用。