2013-12-10 44 views
1

我有一個包含鍵和值的字符串的地圖。基本上,我想輸出:如何輸出一個Map作爲jsp:attributes?

<div class="something" 
    data-path="path" 
    data-linkurl="url" 
/> 

data-path和data-linkurl是Map中的鍵。路徑和網址是值。所以,我想輸出鍵和值:

<jsp:attribute name="{key}">{value}</jsp:attribute> 

問題是,一旦我添加了一個循環,輸出的值,我得到的錯誤「org.apache.jasper.JasperException:.JSP( 65,8)jsp:body必須是標準或自定義操作的子元素。「

在代碼中,我有jsp:body標籤。所以,這不適用於我:

<jsp:element name="div"> 
    <jsp:attribute name="class">something</jsp:attribute> 
    <c:forEach items="myMap"> 
     <jsp:attribute name="key">value</jsp:attribute> 
    </c:forEach> 
    <jsp:body></jsp:body> 
</jsp:element> 

我甚至不需要使用MyMap。它僅在jsp:attribute中具有循環和靜態值失敗。當然,如果我刪除了foreach循環,它會起作用。

有沒有人有什麼建議我可以在這裏嘗試?

問候, 埃裏克

回答

-1

簡單的方法:

<jsp:element name="div"> 
    <jsp:attribute name="class">something</jsp:attribute> 
    <jsp:attribute name="data-path">key</jsp:attribute> 
    <jsp:attribute name="url">${myMap["key"]}</jsp:attribute> 
</jsp:element> 

或者(如果你想要寫的所有動態屬性)

<jsp:element name="div"> 
    <jsp:attribute name="class">something</jsp:attribute> 
    <c:forEach items="${myMap}" var="entry"> 
    <jsp:attribute name="${entry.key}">${entry.value}</jsp:attribute> 
    </c:forEach> 
</jsp:element> 

如果div有身體,你可以這樣做此

<jsp:body> ${div_body} </jsp:body> 
+0

我希望這對我來說很簡單。我曾嘗試過這樣的事情(你提到的第二種選擇),但是當forEach循環在那裏時它會拋出相同的異常。一旦我刪除它,頁面加載正常。我正在運行Tomcat 6.0.37,如果這有什麼不同。 – eborisow

+0

你有jsp:body嗎?如是。添加測試機構內容並進行測試 – Loc

+0

是的,即使在添加標籤後,它仍然毫無用處。但是,一旦我添加它,它不再工作。出於好奇,你測試了你發佈的代碼嗎?如果是,那麼這可能是我需要解決的配置問題。謝謝。 – eborisow

相關問題