【发布时间】:2012-12-27 04:37:25
【问题描述】:
我们将 HTML 标记存储在 XML 文档中,并使用 JiBX 进行解组。我们也使用 Spring,当这些对象之一添加到模型中时,我们可以通过 EL 在 JSP 中访问它。
${model.bookshelf.columnList[0].linkList[0].htmlMarkup}
没有什么开创性的。但是如果我们想在 HTML 标记中存储 EL 表达式呢?比如我们要存储下面的链接怎么办?
<a href="/${localePath}/important">Locale-specific link</a>
...并将其显示在一个 JSP 中,其中 LocalePath 是一个请求属性。
或者更有趣的是,如果我们要存储以下内容怎么办?
The link ${link.href} is in column ${column.name}.
...并在嵌套的 JSP forEach 中显示它...
<c:forEach var="column" items="${bookshelf.columnList}">
<c:forEach var="link" items="${column.linkList}">
${link.htmlMarkup}
</c:forEach>
</c:forEach>
请求属性中的这些 EL 表达式永远不会被计算。有没有办法让他们评估?类似“eval”标签的东西?令牌替换在第一个示例中有效,但在第二个示例中无效,并且不是很健壮。
【问题讨论】:
-
您能否添加更多关于应用程序收到 HTTP 请求时执行的代码序列的详细信息?我问这个是因为我不太了解问题的背景。正如您所展示的,EL 表达式应该在以下情况下进行评估:(1) 您的应用程序已经执行了一些代码,这些代码将这些属性置于 JSP 范围之一中 (2) 您的标记稍后在请求过程中由 JSP 提供服务。跨度>