我有这个实际有效的代码:
<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或属性指令,属性操作不接受任何表达式
三江源。
答案 0 :(得分:6)
为了更加熟悉Struts2标签和OGNL语言,read and bookmark this answer。
由于Struts2标记仅评估OGNL表达式(and not EL Expression,因为您明确指出错误),您需要通过使用{{1}指定的PageContext属性(在OGNL #attr.something
中)访问JSTL对象}:
var
来自OGNL Basics:
<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>
或#attr['foo']
:如果可用,访问#attr.foo
,否则搜索 分别为PageContext
/request
/session