如何将地图输出为jsp:attributes?

时间:2013-12-10 20:57:27

标签: jsp jsp-tags

我有一个包含键和值的字符串的Map。基本上,我想输出:

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

数据路径和数据链接是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 个答案:

答案 0 :(得分:-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>

OR(如果要编写所有动态属性)

<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>