2017-08-24 30 views
2

我在頁面上有幾個類似的結構。每個結構由一個標題和幾個複選框組成。在java代碼中,我爲每組數據創建一個映射並將它們傳遞給服務。如何將地圖傳遞給jsp子結構?

在主jsp頁面上,我獲得服務並可以讀取這些映射鍵和值。但是這樣我會多次重複相同的代碼。所以,我必須創建一個看起來像一個帶有參數的函數,並且會在主頁面中插入一些html代碼。

我可以用簡單的字符串參數調用包含的jsp文件,如here

 <jsp:include page="groop_checkbox_with_header.jspf"> 
      <jsp:param name="mapName" value="investQuestionsExperience"/> 
     </jsp:include> 
     .... 
     "${param.mapName}" - for use in the included jsp file 

但我無法設置參數到地圖。我可以將參數設置爲地圖名稱,並使用包含的jsp中的地圖名稱從service/request/session中獲取地圖。但是如何獲得被調用的jsp文件中的服務/請求/會話?看來,我不得不發送一些非平凡內容的參數。

但是怎麼樣?

我可以使用的JSP tag代替include。但問題仍然幾乎相同。

請注意,我使用純JSP而沒有JSTL <c: >標籤,我不能使用最後一個標籤。

+0

創建自定義標籤。 –

+0

使用標籤,我再次只能傳遞簡單的字符串參數。我需要通過一張地圖。或者地圖的名字,但是我必須以某種方式傳遞服務/請求/會話。我怎樣才能在那裏? – Gangnus

+0

您無法使用*參數*傳遞Map,但是您可以在Java代碼中創建Map並將其設置爲在JSP中使用的請求* Attribute *。 http://learnjava4enterprise.blogspot.co.uk/2013/01/difference-between-attribute-and.html –

回答

1

那麼,進入您的包含的JSP中,request對象與調用JSP的是相同的。您可以隨時通過pageContext.getRequest()訪問它。

同樣的會議(可以通過PageContext.getSession()或超級變量session訪問它),但我建議你使用這個問題的請求。