2013-03-05 131 views
1

我有一個jsp頁面,我想在其中顯示2個使用servlet返回的值填充的列表。應該在jsp頁面加載後立即發生所以我通過jsp頁面的onload函數調用了servlet。我能夠獲取頁面上的列表,但它上升到一個無限循環,一次又一次地調用servlet並顯示相同的值。只從jsp頁面onload事件調用一個servlet頁面

在我test2.jsp,我使用這個調用在我的ONA的servlet加載JSP頁面

function load() 
{ 

document.location.href="/OnaUIDemo/ona?"; 

} 

我使用這個servlet,

RequestDispatcher rd = getServletContext().getRequestDispatcher("/test2.jsp"); 

我弄清楚是因爲它通過頁面加載調用servlet,並且servlet也被重定向到相同的jsp。 jsp再次獲得負載,一次又一次地導致無限的負載。 請幫我把servlet調用只控制一次。

+0

重述您的問題,清楚地說明您的操作,您面臨的問題以及您想要達到的目標,並在每個句子的開頭注意單詞的大小寫。 – skuntsel 2013-03-05 14:34:14

+2

擺脫這個'load()'廢話,只需將鏈接或瀏覽器地址欄中的URL更改爲servlet而不是JSP。現在有道理嗎? – BalusC 2013-03-05 18:18:21

+0

BalusC是對的。只需調用servlet,它執行業務邏輯並將其發送到test2.jsp站點。使用表達式語言,您可以訪問您在servlet中計算的.jsp中的列表。 – Gero 2015-04-16 11:37:54

回答

-1

你真的需要使用servlet嗎?可以使用POJO來完成。

創建一個類,它將返回這兩個列表。

public class test{ 

public List getList1() 
{ 
//do your stuff here to add values in list 
return list;//return your list 
} 
public List getList2() 
{ 
//do stuff here 
return list;//return your list 
} 
} 

在你jsp.Just調用這兩個函數

<% 
test t = new test(); 
List l1=t.getList1(); 
List l2=t.getList2(); 
//now you have the two list,just show them 
%> 

隨着腳本小氣餒,因爲指出out.You可以使用JSTL

<jsp:useBean id="obj_name" type="package_name.class_name" /> 

這相當於<%t檢驗= new test();%> 現在迭代並顯示列表值jstl

<c:forEach var="content" items="${obj_name.list1}"> 
c:out value="${content}" /> 
</c:forEach> 
+1

*自十年以來Scriptlets * [不鼓勵](http://stackoverflow.com/questions/3177733/how-to-avoid-java-code-in-jsp-files/3180202#3180202)。 – BalusC 2013-03-05 18:16:10