0

我想要一个自定义 JSP 标记,该标记具有一个普通 bean 表达式的属性并命名一个列表。然后,标签应以特定形式呈现列表。

我尝试编写一个带有 s:iterator 属性的自定义标签,如下所示:

<%@ tag body-content="empty"%>
<%@ attribute name="list" required="true"  %>

<%@ taglib prefix="s" uri="/struts-tags"%>

<s:set var="varList" >${list}</s:set>
<s:iterator value="varList">(render item)</s:iterator>

在不同的 JSP 中,我将它与 bean 表达式一起使用:

<my:listtag list="myObject.aList"/>

我希望它会遍历“myObject.aList”,但不幸的是这不起作用。似乎发生的是,迭代器尝试迭代“myObject”而不是“myObject.aList”。

发生了什么事,我怎样才能得到我想要的行为?

非常感谢你!

4

1 回答 1

0

好的,我们开始吧。属性必须定义为“Collection”类型,并且迭代器变量必须由“%{#attr.list}”给出:

<%@ attribute name="list" required="true" type="java.util.Collection" %>

<s:iterator value="%{#attr.list}">(render item)</s:iterator>

在另一个 JSP 中,我需要使用变量的而不是变量名来调用它:

<my:listtag list="${myObject.aList}"/>

耶!

于 2013-03-25T18:55:54.030 回答