一尘不染

如何使用JSTL 与Struts2 ?

jsp

我有实际工作的这段代码:

<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或属性指令,属性操作不接受任何表达式

谢谢。


阅读 218

收藏
2020-06-08

共1个答案

一尘不染

为了更熟悉Struts2标签和OGNL语言,请阅读并为该答案添加书签。

由于Struts2标记仅评估OGNL表达式(而不是ELExpression,因为您清楚地指出了错误),因此您需要通过使用以下命令#attr.something指定的PageContext属性(在OGNL中)访问JSTL对象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>

OGNL基础

#attr['foo']#attr.foo :访问(PageContext如果有),否则分别搜索 request/
session/application

2020-06-08