关于在jsp页面中向外部js文件传值的问题

2018-05-05  本文已影响0人  hellohuan

一、问题场景

前几天在写jsp的时候遇到这样一个问题——当jsp页面引入了一个外部js文件时,在jsp页面中通过EL表达式取值,然后向外部js传值却不成功。
比如在jsp中如下所示:

<script>
    var  value = '${a.value}'
</script>

在外部js中如下所示:

<script>
    let  v = value
</script>

采用这种方式是无法在外部 js 文件中获取到 value 值得,原因在于 jsp 对 js 文件的处理在客户端(浏览器)完成,这样导致了外部 js 文件无法在服务器对 jsp 进行处理时获取 value 值,而当 jsp 被处理为静态的 html 返回到客户端(浏览器)时,显然 value 值已失效(EL表达式失效),所以整个过程中外部 js 文件都获取不到 value 。

二、解决方案

这里提供两种解决方案:隐藏域传值和 js 文件改为 jsp 文件。

1、隐藏域传值

jsp 中代码如下:

<input type = 'hidden' id = 'value' name = 'value' value = '${a.value}'></input>

js 文件中代码如下:

<script>
    let  v = document.getElementById('value').value;
</script>

2、js 文件改为 jsp 文件

直接将外部 js 文件的文件扩展名改为.jsp 即可。注意:jsp 文件中对 js 外部文件的引用中也要修改文件扩展名为.jsp,如下:

<script src = '外部 js 文件.jsp' type = 'text/javascript' ></script>

PS:聪明的同学可以思考一下两种解决方案的思路分别是什么。

以上

版权声明:本文为博主原创文章,未经博主允许不得转载。https://www.jianshu.com/p/2ca99c01532b

上一篇 下一篇

猜你喜欢

热点阅读