迭代器值的自定义标记属性

时间:2013-03-22 02:34:48

标签: java-ee jsp-tags

我想要一个自定义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”。

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

非常感谢!

1 个答案:

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

耶!