2016-03-03 37 views
0

我在我的REST環境中使用Viewable來顯示JSP。但是當我通過Viewable傳遞參數時,我無法在JSP中訪問此參數。通過在JSP中可見的訪問參數

我已經在我的Java文件下面的代碼 -

Map<String, Object> map = new HashMap<String, Object>(); 
    map.put("posts", posts); 
    map.put("name", "satpute"); 
    return new Viewable("/home",map); 

我用不同的選項來訪問JSP此map參數,但是返回null。我使用了以下方法 -

<% String name = (String)request.getAttribute("name"); out.print(name); %> 

返回NULL。

我試圖用它另一種方式是 -

<% String name = (String) pageContext.getAttribute("name"); out.print(name); %> 

返回null。

對不起,如果這是一個非常基本的問題,但我已經在servlet中使用了JSP中的request。但是我無法弄清楚如何在Viewable中使用JSP。

請幫忙。

+0

您需要先獲取'map',然後進行迭代。既然你發送的是地圖,你的名字就在地圖裏面。 –

+0

@Vinoth克里希南可以告訴我,我怎樣才能訪問它,是否getAttribute(「map.name」)或其他東西 – RSatpute

+0

[Here](http://stackoverflow.com/questions/2117557/how-to- iterate-an-arraylist-inside-a-hashmap-using-jstl)是[BalusC](http://stackoverflow.com/users/157882/balusc)的解釋。 –

回答

0

你必須接受map參數,而不是name

<% Map<String, Object> map= Map<String, Object>request.getAttribute("map"); 
for (Map.Entry<String, Object> entry : map.entrySet()) { 
    String key = entry.getKey(); 
    Object value = entry.getValue(); 
}%> 

我不知道你的posts對象(什麼樣的對象)。從value您可以獲取該對象,然後將其投射並重新迭代以獲取值。

但我建議以後用JSTL

+0

我使用Map 訪問map map =(Map )request.getAttribute(「map」); '和'name'使用Name:<%String name =(String)map.get(「name」);的out.print(名稱); %>'。這會拋出'java.lang.NullPointerException'。我是否以錯誤的方式訪問了名字? – RSatpute

+0

是的,你不能訪問那樣的名字。在我的回答中,'key'將返回值'name','value'將返回'name'的具體值。 –

+0

'posts'是[協議緩衝區](https://developers.google.com/protocol-buffers)對象。它具有類似於JSON的結構,但在對象中。我在這個對象中有一些層次結構,我懷疑我能夠在JSTL中使用它,因爲它有它自己的函數。而現在,我只是在地圖上訪問普通的'String',但我無法訪問它。 – RSatpute

相關問題