Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ${}模板文字(ES2015)与JSP EL语法冲突_Javascript_Java_Jsp_Ecmascript 6_El - Fatal编程技术网

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

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

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

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}!`