我想要一个自定义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”。
发生了什么,我怎样才能得到我想要的行为?
非常感谢!
答案 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}"/>
耶!