2013-12-08 2 views
4

나는 실제로 작동이 코드를 가지고 :JSTL <c:forEach>을 Struts2와 함께 사용하는 방법 <s:url>?

<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 문을 : 반복자를?

나는 시도했다 :

<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

감사합니다을.

+0

왜 그렇습니까? –

+0

Becouse 나는 struts 태그 s : iterator 및 OGNL % {#}에 익숙하지 않다. foreach와 EL $ {}에 JSTL C를 사용하고 싶습니다. 또한 저는 항상 EL과 OGNL이 같은 것을 다른 방법으로 만 할 수 있다는 것을 읽었습니다. 그러나이 경우 나는 EL으로 길을 찾을 수 없습니다. –

+0

오늘 저녁에 코드를 작성하고 결과를 게시 해 보겠습니다. 감사합니다. –

답변

6

Struts2 태그 및 OGNL 언어를 더 편하게 사용하려면 read and bookmark this answer.

<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에서 : 당신이 var 지정 (OGNL #attr.something 단위) PageContext의 속성을 통해 JSTL 개체에 액세스 할 필요가 (당신이 명확하게 오류 상태로 and not EL Expression) Struts2 태그는 OGNL 표현식을 평가하기 때문에

:

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

+1

감사합니다. 예상대로 작동합니다. 또한 OGNL에 관한 몇 가지 문서를 읽었습니다. 이제 훨씬 더 명확 해졌습니다. 어쩌면 struts2 태그 + OGNL로 전환 할 것입니다. 그레지 밀. –

+0

도움이 된 것을 기쁘게 생각합니다. :] –