2012-01-06 6 views
3

JQuery/JqgridのURLパラメータが正しく解決されません。私はサーブレットへのJquery呼び出しを行ったときのバーURLエラー

<!-- language: lang-js --> 


var McGuirePortlet = function(nameSpace) { 
    var servletURL = '<%=renderResponse.encodeURL(renderRequest.getContextPath())%>'+"/roster/grid"; 
    var mThis = $.Portlet.call(this, nameSpace); 
    mThis.ready = function() { 
     // this method is called when $(document).ready is called 
     alert("Coming here"); 
     $("p").click(function() { 
      $(this).hide(); 
     }); 
     $("#rosterGrid").jqGrid({ 
      url: servletURL,  
      datatype: 'json', 
      colNames:['Last Name', 'First Name'], 
      colModel:[ 
        {name:'lastName',index:'firstName asc', width:55}, 
        {name:'firstName',index:'firstName', width:55} 
      ], 
      rowNum:10, 
      rowList:[10,20,30], 
      pager: '#roster', 
      sortname: 'lastName', 
      viewrecords: true, 
      sortorder: "desc", 
      caption:"JSON Roster Grid" 
     }); 
     jQuery("#rosterGrid").jqGrid('navGrid','#roster',{edit:false,add:false,del:false}); 
    }; 
    return mThis; 
}; 
jQuery.registerPortlet(new McGuirePortlet("<portlet:namespace />")); 

の下に私のJavaスクリプトファイルを掲示しています。しかしジャバスクリプト内 <%=renderResponse.encodeURL(renderRequest.getContextPath())%>が正しく解決取得されていないため、URLが変な表示されます。

また、FireBugのjavascriptコンソールでは、応答ウィンドウにはJSONではなくXMLタブが表示されていますが、JSON応答は期待されています。スナップショットを添付して参照してください。

これを解決するために苦労しています。あなたの助けを楽しみにしています。

答えて

0

あなたが投稿したファイルがjsファイルだと思います。しかし、あなたが試したもの(<%=renderResponse.encodeURL(renderRequest.getContextPath())%>)はjspファイルでのみ評価されます。

二つの異なる回避策:

  • はスクリプトにJSPファイルからパラメータとしてURLを渡します。
  • ファイルの名前をmy.js.jspに変更し、URL my.jsmy.js.jspファイルにマップするために何らかの種類のURLマッピングを使用します。
+0

jspに上記のjsコードを追加しましたが、http:// localhost:8080/McGuirePortlet/roster/grid?_search = false&nd = 1325843369982&rows = 10&page = 1&sidx = lastName&sord = desc'サーブレットマッピング "/ roster/*"を持つサーブレットを持っていても、HTTP 404エラーイベントを返します。 @ResponseBodyを持つバネコントローラで、応答をjson文字列として書き戻します。しかし、なぜそれがうまくいかないのかわからない。 – Arvind

+0

@この継ぎ目は別の問題になると思います。あなたが呼び出したURL、コントローラ、正確な例外メッセージ、およびその件名や珍しいものすべてを含む新しい質問を提起してください。 – Ralph

0

次の手順を試してください。 は、のようなあなたのweb.xmlにサーブレットを設定し

<servlet> 
     <description>Somedesc</description> 
     <display-name>Somename</display-name> 
     <servlet-name>Servletname</servlet-name> 
     <servlet-class>com.packge1.Servletname</servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>Servletname</servlet-name> 
    <url-pattern>/Servletname</url-pattern> 
    </servlet-mapping> 

そしてjqgrid URLからservletname /としてURLを渡します。

関連する問題