我有这个代码实际上有效: 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?
          <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> 
 但我得到错误:
According to TLD or attribute directive in tag file, attribute action does not accept any expressions
谢谢.
为了更好地使用Struts2标签和OGNL语言, read and bookmark this answer.由于Struts2标记仅评估OGNL表达式(and not EL Expression,因为您错误明确指出),您需要通过使用var指定的PageContext属性(在OGNL#attr.something中)访问JSTL对象:
<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 Basics:
#attr['foo']or#attr.foo
: Access toPageContextif available, otherwise searches
request/session/applicationrespectively
