includeラベルによるjsパスが見つからない問題の分析と解決について

1625 ワード

jsp:includeタグの使用と両者の違いを先に思い出すことについて(この文章では両者の使い方に違いはありません)
jsp:includeはまずincludedをコンパイルする.jspファイル、次に含める(先にコンパイルして、後で含む)
@includeはまずファイルを含めて来て、それから統一的にコンパイルします(先に含んで、後でコンパイルします)
今日の午後、Jqueryをプロジェクトに統合しようとしたら、どうしても問題が発生することに気づきました.原因は経路の問題です.
統合する時、私の構想は1つの公共JSPファイルを書くので、中はいくつかのよく使うjsファイルを含んで、もちろんここで私はJqueryプラグインを使っています.
しかし、書き上げたところ、パブリックJSPを単独でテストすることは可能であることが判明したが、パブリックJSPページを含むページはJQueryを使用することができず、ロード順序の問題だと思っていた.
いくつかのテストを経て、やっとその中の問題を発見した.
プロジェクトのファイルが多いため、ファイルはすべて1つのフォルダの下に置かない:公共JSPページの中で、
 
  


<br>$(function(){ <br>alert('hello1'); <br>}); <br>

呼び出し時に次のものがあります.
しかし、これは間違いを引き起こす可能性が高い.
なぜなら、include以降、共通JSPが自分のJSPにロードされると、JQueryrの相対位置が変化してしまうからである.つまり公共JSPはJQueryの相対的な位置を自分のJSPに伝えているが、自分のJSPは自分自身を基準として経路を通ってJqueryプラグインが見つからない.簡単に言えば、相対パスを使用すれば、共通JSPにおけるパスは、自分のjSPに対するパスであるべきである.
しかし、これは明らかに公共JSPの意味を失っているので、ここでは絶対パスで行います.
 
  

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

<br>$(function(){ <br>alert('hello1'); <br>}); <br>

これは,自分のjSPページに共通JSPを導入すればよい.