jsp 的 el 表达式和 es6 模板字符串语法都是 ${} 的形式, 在 jsp 文件中, 会优先认为是 el 表达式. 我们可以使用以下方式解决冲突
在 jsp 文件
- 使用反斜线
\
转义, 例如要输出 js 变量username
的值, 那么使用\${username}
这种形式 - 使用字符串包裹, 外面会被认为是 el 表达式, 里面会认为是普通字符串, 例如
${'${username}'}
在 js 文件
- 单独的 js 文件, java 的 jsp 引擎只会解析 jsp /jspx 文件, 并不会解析 js 文件, 我们可以直接使用 js 的模板字符串语法
jsp 文件用例
<script>
/*
在 jsp 文件中使用 \${} 会被优先当作 el 表达式, (不存在的值, 默认是空字符串), 而不是 js 的模板字符串
解决: 可以使用单独的 js 文件来利用模板字符串特性
使用 \${} 包裹字符串的方式, 例如 ${'${}'}
*/
let username = '你好鸭'
// 这里不会输出 你好鸭, 而不是输出空字符串
console.log(`username = ${username}`)
// 这里可以正常输出 你好鸭
console.log(`username = \${username}`)
// 这里可以正常输出 你好鸭
console.log(`username = ${'${username}'}`)
</script>
js 文件用例
console.log(`ctx = ${ctx}`)