jsp - 如何使用 JSTL <c :forEach> with Struts2 <s:url>?

标签 jsp struts2 iterator jstl ognl

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

<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 ,正如您的错误明确指出的那样),您需要通过 PageContext 属性(在 OGNL #attr.something 中)使用 var 指定来访问 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 to PageContext if available, otherwise searches request/session/application respectively

关于jsp - 如何使用 JSTL <c :forEach> with Struts2 <s:url>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20457431/

相关文章:

java - 如何在jsp页面调用jasper报表

java - JSP EL : dynamic creation of property name

java - Dojo 插件在 Struts 2 中不工作

在 Struts2 中使用 JSON RPC 时从未调用过 Java 方法

python - 在循环中跳过多次迭代

java - Struts2 触发表在完成时加载

jsp - 覆盖 jar META-INF/resources 中的 JSP 文件不可预测

jsp - 为 struts 2 中的字符串列表制作垂直的单选按钮列表?

c++ - 迭代一个类中的不同集合类型

C++ vector 中的最小元素