Javascript ${}模板文字(ES2015)与JSP EL语法冲突
${}同时被JSP和JS使用,所以发生的事情是,JS模板文本中的${}在编译成servlet之前被解释和删除。有没有一种方法可以让Java忽略${},而不用使用IsAligned完全关闭该功能Javascript ${}模板文字(ES2015)与JSP EL语法冲突,javascript,java,jsp,ecmascript-6,el,Javascript,Java,Jsp,Ecmascript 6,El,${}同时被JSP和JS使用,所以发生的事情是,JS模板文本中的${}在编译成servlet之前被解释和删除。有没有一种方法可以让Java忽略${},而不用使用IsAligned完全关闭该功能 const subject = 'world'; let greet = `hello ${subject}!` 在浏览器中变为以下内容: const subject = 'world'; let greet = `hello !` 这是我想出来的最好的,真的没有挖掘它有多丑陋 <c:out
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代码移动到外部文件或脚本
标记内的函数,这将是解决jsp与JS语法冲突的最佳方法。您可以在${}前面加一个反斜杠,以便jsp忽略它(由David Ford发现)
出于好奇,为什么要使用反勾号?当使用反勾号作为分隔符时,ES6仅替换这些值。你试过使用简单的撇号吗?只需在自己的JS文件中编写JS代码,而不是与HTML源代码混合。这是多年来的“最佳实践”。在自己的文件中编写JS以获得“最佳实践”是不同的,而编写JS则不同,因为您没有任何选择。很遗憾,这场冲突无法以更好的方式解决。
const subject = 'world';
let greet = `hello \${subject}!`