1

同じJavaScriptを使用する必要がある2つのJSPページがあります。スクリプトはアンカーに関数をアタッチします。この関数は、ユーザーがアンカーをクリックすると、コントローラーとサービスレイヤーを介してデータベース操作を呼び出します。

両方のJSPページにこれらのアンカーがあります。したがって、このスクリプトを両方のページで再利用できればよいでしょう。このスクリプトのみを含むJSPページを作成し、このページを両方のjspページに含めることを計画しています。これは、JavaScriptを再利用する際の良い習慣ですか?これを行うための他のより良い方法はありますか?

これはスクリプトのスニペットです:

$(document).ready(function(){

         $('a[name*="like"]').click(function() {

             var hrefName = $(this).attr("name");
             var href = $(this);
             $.ajax({  
                  type: "POST",  
                  url: "likeARecipe",  
                  data: 'recipeId=' + $(this).attr("title") + '&operation=' + $(this).attr("name"),  
                  success: function() {  

                      if(hrefName == 'unlike')
                      {
                          $(href).attr("name","like");
                          $(href).text("like");
                      }else {
                          $(href).attr("name","unlike");
                          $(href).text("unlike");
                      } 
                  }  
                });  
                return false; 
         });



      });

アップデート

スクリプトをcommon.jsスクリプトに入れることにしました。このスクリプトをscripts/common.jsの下に配置します。

タグを使用して、このスクリプトへのURLをレンダリングしました。

<spring:url value="/resources/scripts/common.js" var="common_js" />
<script src="${common_js}" type="text/javascript"><jsp:text/></script>

コンテキストファイルでこれらのリソースを指定することにより、このスクリプトを読み取るようにSpringを構成します。

<resources location="/, classpath:/META-INF/web-resources/" mapping="/resources/**"/>

ただし、SpringはJSPページにスクリプトをロードしませんでした。問題をトラブルシューティングする方法についての提案はありますか?

アップデート

私はこの問題の解決策を見つけました。スクリプトを変更する必要があります。スクリプトをfunction()で囲みました。

(function(){
    alert("test");
    $(document).ready(function(){

         $('a[name*="like"]').click(function() {


             var hrefName = $(this).attr("name");
             var href = $(this);
             $.ajax({  
                  type: "POST",  
                  url: "likeARecipe",  
                  data: 'recipeId=' + $(this).attr("title") + '&operation=' + $(this).attr("name"),  
                  success: function() {  

                      if(hrefName == 'unlike')
                      {
                          $(href).attr("name","like");
                          $(href).text("like");
                      }else {
                          $(href).attr("name","unlike");
                          $(href).text("unlike");
                      } 
                  }  
                });  
                return false; 
         });
      });

})(jQuery);

4

1 に答える 1

2

次のように、外部.jsファイルを作成し、両方のJSPページから参照します。

<script src="displaydate.js" type="text/javascript"></script>

ここを見てください:http ://www.javascriptkit.com/javatutors/external.shtml

于 2012-12-14T22:25:37.887 に答える