includeラベルによるjsパスが見つからない問題の分析と解決について
1625 ワード
jsp:includeタグの使用と両者の違いを先に思い出すことについて(この文章では両者の使い方に違いはありません)
jsp:includeはまずincludedをコンパイルする.jspファイル、次に含める(先にコンパイルして、後で含む)
@includeはまずファイルを含めて来て、それから統一的にコンパイルします(先に含んで、後でコンパイルします)
今日の午後、Jqueryをプロジェクトに統合しようとしたら、どうしても問題が発生することに気づきました.原因は経路の問題です.
統合する時、私の構想は1つの公共JSPファイルを書くので、中はいくつかのよく使うjsファイルを含んで、もちろんここで私はJqueryプラグインを使っています.
しかし、書き上げたところ、パブリックJSPを単独でテストすることは可能であることが判明したが、パブリックJSPページを含むページはJQueryを使用することができず、ロード順序の問題だと思っていた.
いくつかのテストを経て、やっとその中の問題を発見した.
プロジェクトのファイルが多いため、ファイルはすべて1つのフォルダの下に置かない:公共JSPページの中で、
呼び出し時に次のものがあります.
しかし、これは間違いを引き起こす可能性が高い.
なぜなら、include以降、共通JSPが自分のJSPにロードされると、JQueryrの相対位置が変化してしまうからである.つまり公共JSPはJQueryの相対的な位置を自分のJSPに伝えているが、自分のJSPは自分自身を基準として経路を通ってJqueryプラグインが見つからない.簡単に言えば、相対パスを使用すれば、共通JSPにおけるパスは、自分のjSPに対するパスであるべきである.
しかし、これは明らかに公共JSPの意味を失っているので、ここでは絶対パスで行います.
これは,自分のjSPページに共通JSPを導入すればよい.
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を導入すればよい.