문제

I have this code that actually works:

<s:iterator value="breadcrumb.links" var="link">
    <s:url action='%{#link.url}' var="url" />
    <li>
       <a href="${url}">${link.name}</a>
    </li>
</s:iterator>

How con I do the same thing but with c:foreach instead of s:iterator ?

I tried with:

<c:forEach items="${breadcrumb.links}" var="link">
    <s:url action='${link.url}' var="url" />
    <li>
        <a href="${url}">${link.name}</a>
    </li>
</c:forEach>

but I get the error:

According to TLD or attribute directive in tag file, attribute action does not accept any expressions

Thankyou.

도움이 되었습니까?

해결책

To be more comfortable with Struts2 tags and OGNL language, read and bookmark this answer.

Since Struts2 tags only evaluate OGNL expressions (and not EL Expression, as you error clearly states), you need to access the JSTL object through the PageContext attribute (in OGNL #attr.something) specified with 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>

From OGNL Basics:

#attr['foo'] or #attr.foo : Access to PageContext if available, otherwise searches request/session/application respectively

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top