首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在JSP文件中运行Java 8 lambda

如何在JSP文件中运行Java 8 lambda
EN

Stack Overflow用户
提问于 2020-09-25 10:50:45
回答 1查看 464关注 0票数 2

这是一个带有Maven管理的Java项目,并在本地运行Jetty。

当我试图在.jspf文件中运行lambda时,遇到了一个问题:Lambda expressions are allowed only at source level 1.8 or above

我的设置:

  • 在Intellij中的项目结构中,我将project和Project设置为Java 8。
  • 模块语言级别为8- Lambdas、类型注释等。
  • 使用<maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target>
  • 项目字节码版本设置为1.8
  • 最新版本的Jetty (v9.4.31.x)
  • 该项目使用的是jetty-jspc-maven-plugin插件,我在<configuration>中将sourceVersiontargetVersion设置为1.8

我遗漏了什么吗?还是Java 8根本不可能使用JSP / jspc?

EN

回答 1

Stack Overflow用户

发布于 2020-09-25 13:59:33

现有的https://github.com/jetty-project/embedded-jetty-jsp有一个设置compilerSourceVMcompilerTargetVM以允许*.jsp文件使用Java8特性的示例,比如lambda的特性。

基本上配置您的JettyJspServlet

代码语言:javascript
运行
复制
// Create / Register JSP Servlet (must be named "jsp" per spec)
ServletHolder holderJsp = new ServletHolder("jsp", JettyJspServlet.class);
holderJsp.setInitOrder(0);
holderJsp.setInitParameter("logVerbosityLevel", "DEBUG");
holderJsp.setInitParameter("fork", "false");
holderJsp.setInitParameter("xpoweredBy", "false");
holderJsp.setInitParameter("compilerTargetVM", "1.8");
holderJsp.setInitParameter("compilerSourceVM", "1.8");
holderJsp.setInitParameter("keepgenerated", "true");
servletContextHandler.addServlet(holderJsp, "*.jsp");

我接着添加了一个lambda.jsp,它在JSP中使用一个简单的lambda来证明它。(lambda和jsp的JspWriter混在一起相当复杂,不是后视眼的最佳选择)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64062666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档