jsp 的 el 表达式和 es6 模板字符串语法冲突解决

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>

el表达式和js模板字符串冲突
js 文件用例

console.log(`ctx = ${ctx}`)

js 文件无法直接获取 java 变量

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值