JSP ページで jquery の load() メソッドを使用しているときに問題が発生しました。最初のページでは、属性 list1 をリクエストに設定し、load() を使用してページ 2 のコンテンツをページ 1 の「#content」にロードしようとしています。
<%
ArrayList<String> list1 = new ArrayList<String>();
request.setAttribute("list1", list1);
%>
<script>
(function($) {
$(document).ready(function() {
$.ajaxSetup( {
cache: false,
beforeSend: function() {
$('#RSSList').hide();
$('#loading').show();
},
complete: function() {
$('#loading').hide();
$('#RSSList').show();
},
success: function() {
$('#loading').hide();
$('#RSSList').show();
}
});
var refreshId = setInterval(
function() {
$("#content").load("page2.jsp");
}, 9000);
} );
})(jQuery);
</script>
<div id="content"></div>
<img src="images/loading.gif" id="loading" alt="loading" style="display:none;" />
2 ページ目では、list1 がリクエストから取得され、out.println() によって出力される前に何らかの処理が行われます。
<%
ArrayList<String> list2 = (ArrayList<String>) request.getAttribute("list1");
// process list2 here
if (list2==null){
out.println("list2 is null");
} else {
// out.println() contents of list2
}
%>
次に、ここに問題があります。request.getAttribute("list1")
in page 2 は null ポインターを返し、いくつかの調査の結果、リクエストがページ 2 に送信されていないことが判明したため、リクエストから「list1」を取得できません。
request.getRequestDispatcher("page2.jsp").forward(request, response)
page2.jsp にリダイレクトされるため、ページ 1では使用できません。これは意図したことではありません。
page2.jsp で list1 を取得できるように、リクエストをページ 2 に渡すことができる回避策はありますか? ありがとう。