${} 模板文字 (ES2015) 与 JSP EL 语法冲突

${} template literal (ES2015) conflict with JSP EL syntax

${} 被 JSP 和 JS 使用,所以发生的事情是 JS 模板文字中的 ${} 在被编译成 servlet 之前被解释和删除。有没有一种方法可以告诉 Java 忽略 ${} 而无需使用 isELIgnored 完全关闭该功能?

const subject = 'world';
let greet = `hello ${subject}!` 

在浏览器中变成如下

const subject = 'world';
let greet = `hello !` 

这是我想出的最好的,虽然真的没有挖掘它有多丑。

<c:out value="var body = `pq_country=${country}&pq_population=${population}`;" escapeXml='false'/>

你必须将JS代码移动到外部文件或script标签中的函数中,这将是解决jsp与JS语法冲突的最佳方法。

您可以在 ${} 前面加一个反斜杠,这样 JSP 就会忽略它(David Ford 通过 this article 发现)。

const subject = 'world';
let greet = `hello ${subject}!`