您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

通过EL 3.0(JEE7; Tomcat 8)访问JSP中的静态属性或方法

通过EL 3.0(JEE7; Tomcat 8)访问JSP中的静态属性或方法

Tomcat的jsp- api.jar(至少从8.0.9起)中存在错误。根据更改日志,它已在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上下文中。

这是一个示例,允许您静态访问java.timeWeb应用程序中所有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()}这不起作用。

其他 2022/1/1 18:15:09 有463人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶