引入metro4的JS库后JSP无法编译,不使用CDN如何解决?
问题根本原因
你使用JSP静态包含指令<%@include %>直接将metro.js的源码嵌入到JSP页面的<script>标签中,而metro.js的源码内包含<%这类和JSP语法标记完全一致的字符,JSP编译器会将这些字符误识别为JSP脚本的起始标记,最终导致JSP编译失败。
本地部署无需CDN的解决方案
不要用包含指令直接嵌入静态资源内容,改为使用标准的HTML资源引用语法,直接指向你本地服务端的静态资源路径即可,修改后的对应代码如下:
- 替换CSS引入方式
原来的嵌套include的style标签完全不需要,直接用link标签引入本地CSS:
<link rel="stylesheet" type="text/css" href="/assets/css/metro.min.css">
- 替换JS引入方式
删除script标签内部的include指令,改为用src属性引用本地JS文件:
<script type="text/javascript" src="/assets/js/libs/jquery/3.6.0/jquery-3.6.0.slim.min.js"></script> <script type="text/javascript" src="/assets/js/libs/metro4/metro.js"></script>
方案说明
这种引用方式是让浏览器独立请求对应的静态资源,不会将JS、CSS的源码嵌入到JSP的编译内容中,从根源避免了JS语法和JSP语法的冲突问题,全程使用你本地部署的静态资源,不需要依赖任何外部CDN。
内容的提问来源于stack exchange,提问作者Jobert Costan
相关产品推荐
相关产品推荐

