2013-07-03 58 views
1

在java中我的代碼,在JavaScript如何從javascript訪問java.util.List會話?

List abcList; 
request.getSession().setAttribute("abc", abcList); 

我要訪問此列表中的javascript,

var myVariable='<%=(List)session.getAttribute("abc")%>'; 

我沒有收到名單(abcList)值......

+2

你甚至看過生成的源代碼嗎?你需要發出合法的,合理的JavaScript。 –

+0

它給我不適當的輸出(package.subpackage ....),但它能夠檢測列表大小! – krohit

回答

0

您必須編寫將列表打印爲javascript數組的代碼。這propably只是導致

var myVariable='[email protected]' 

,但你需要的是

var myVariable = ["element1", "element2, ...] 

使用JSON序列化圖書館。那些爲你打印。或者寫一個json打印機,它實際上很簡單^^。

0

你不能那樣做。您必須通過迭代Java列表來創建列表。你可以嘗試這樣的...

var myVar = []; 
<% 
List list = (List)session.getAttribute("abc"); 
for(int i = 0; i < list.size(); ++i){ 
    out.println("myVar.push('" + list[i] + "');"); 
} 
%> 
+0

.push是什麼? – krohit

+0

list [i]給我錯誤:'表達式的類型必須是數組類型,但它解析爲列表' – krohit

+0

@RohitKKK Mohkhan令數組與列表混淆。使用普通的Java 5+ for/each語法。列表值也必須是JS轉義的。就個人而言,我會使用''而不是scriptlet,這已經推薦了近十年。更好的是,使用JSON庫。 –

0

究竟想要達到什麼目的? 記住JavaScript將在客戶端瀏覽器上執行,因爲Java代碼將在服務器上。所以你不應該從javascript引用一個java變量。取而代之的是使用jsp標籤,您只能在加載時在服務器上獲取列表。

+0

我第一次調用頁面加載函數,所以從jsp調用變量將無濟於事,我希望這個分頁的東西,因爲我想從Java代碼完成列表,我設置會話。 – krohit