• js 放在公共头部 子页面引用js 失效问题


    先回忆一下二者的区别(对于此篇文章而言,二者在用法上没有区别)

     

    jsp:include是先编译一下included.jsp文件,然后再包含        先编译,后包含
    @ include是先把文件包含就来,然后统一编译                   先包含,后编译

    今天下午想把jQuery集成到项目中,发现怎么样都会出问题。原因就是路径问题。

    在集成时,我的思路是写一个公共JSP文件,里面包含一些常用的js文件,当然此处我用的就是Jquery插件了。

    但写完发现单独测试公共JSP是可以使用的,但包含公共JSP页面的页面却始终不能使用JQuery,开始还以为是加载顺序的问题。

    几经测试,终于发现了其中的问题。

     

    由于做的项目文件较多,故文件都不放在一个文件夹下:在公共JSP页面中,有

    <%@ page language="Java" import="java.util.*" pageEncoding="utf-8"%>

    <script type="text/JavaScript" src="js/jquery132min.js"></script>

        <script type="text/javascript">    
        $(function(){
        alert('hello1');
        });
    </script>

     

    在调用它的时候,有:

    <%@ include file="../../common_ext.jsp"%>

    但这样很可能导致错误。

     

    原因是,include之后,公共JSP被加载到自己的JSP,则JQueryr的相对位置已经发生了变化。即公共JSP把JQuery的相对位置传给了自己的JSP,但自己的JSP以自身为标准,通过路径就找不到Jquery插件了。简单地说,就是如果用相对路径,则公共JSP中的路径就应该是相对自己jSP的路径了。

     

    但这样显然失去了它是公共JSP的意义,因此在这里用绝对路径来做:

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

    <%
    String tPath = request.getContextPath();
    String tBasePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+tPath+"/";
    %>

    <script type="text/javascript" src="<%=tBasePath%>js/jquery132min.js"></script>
        <script type="text/javascript">
        
        $(function(){
        alert('hello1');
        });
        
        </script>

     

    这样,只要在自己的jSP页面中引入公共JSP就可以了。

  • 相关阅读:
    oracle过期备份未删除导致磁盘撑爆
    数据文件、监听日志、告警日志、redo日志、归档日志的迁移
    linux软件卸载命令
    Nginx版本平滑升级方案
    rsync 服务搭建
    在node节点部署kubectl管理k8s集群
    源码编译安装nginx及设置开机启动项
    K8S日常运维中关于“ImagePullBackOff”报错的处理思路分析
    查看所有日志命令:journalctl
    Docker编排工具Docker Compose的使用
  • 原文地址:https://www.cnblogs.com/lykbk/p/rdgergrg3456435454.html
Copyright © 2020-2023  润新知