我有实际工作的这段代码:
<s:iterator value="breadcrumb.links" var="link"> <s:url action='%{#link.url}' var="url" /> <li> <a href="${url}">${link.name}</a> </li> </s:iterator>
我如何用c:foreach而不是s:iterator做同样的事情?
我尝试了:
<c:forEach items="${breadcrumb.links}" var="link"> <s:url action='${link.url}' var="url" /> <li> <a href="${url}">${link.name}</a> </li> </c:forEach>
但是我得到了错误:
根据标签文件中的TLD或属性指令,属性操作不接受任何表达式
谢谢。
为了更熟悉Struts2标签和OGNL语言,请阅读并为该答案添加书签。
由于Struts2标记仅评估OGNL表达式(而不是ELExpression,因为您清楚地指出了错误),因此您需要通过使用以下命令#attr.something指定的PageContext属性(在OGNL中)访问JSTL对象var:
#attr.something
var
<c:forEach items="${breadcrumb.links}" var="link"> <s:url action='%{#attr.link.url}' var="url" /> <li> <a href="${url}">${link.name}</a> </li> </c:forEach>
从OGNL基础:
#attr['foo']或#attr.foo :访问(PageContext如果有),否则分别搜索 request/ session/application
#attr['foo']
#attr.foo
PageContext
request
session
application