我有这个代码实际上有效: 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 toPageContext
if available, otherwise searches
request
/session
/application
respectively