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

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

本文关键字:JSP EL 冲突 语法 ES2015 文字      更新时间:2023-09-26

${}正在被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'/>

可以在${}前面加一个反斜杠,这样JSP就会忽略它(David Ford在本文中发现了这一点)。

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

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