【发布时间】:2011-12-30 20:54:55
【问题描述】:
我想将外部 xhtml 文件中的特定元素导入到我的 JSP 中。 JSTL 库可以做到这一点吗?
背景
我们有一个 XHTML 帮助页面。每个帮助主题都在一个div 元素中,每个div 都有一个id。在我们应用程序的其他部分,我们希望从帮助页面导入特定的 ids 以提供特定于上下文的帮助。
我们一直在尝试
<c:import var="helpData" url="file:/tmp/help.html"/>
<x:parse var="helpXml" doc="${helpData} " />
<x:out select="$helpXml//div[@id='helpTopicXXX']" escapeXml="false"/>
但是我们有两个问题
parse在 XHTML 上非常慢(约 10 秒)(将第一行从<!DOCTYPE...更改为<?xml...可以解决此问题。)所选元素中的任何标记都会消失。示例
I <b>love</b> tacos输出为I love tacos
有没有人有一种从外部来源显示特定元素的好方法?有谁知道如何让 JSTL xml 库将所选节点显示为 xml 而不是文本(解决问题 2)?
【问题讨论】:
-
我很好奇你为什么要在 JSP 中这样做。
-
@DaveNewton 我不会考虑模型的“帮助内容”部分。我会认为这是观点的一部分。至于为什么它在服务器端而不是使用 JavaScript 按需加载 - 我们认为如果不需要使用 AJAX 加载帮助内容,则更容易满足我们的可访问性目标(例如屏幕阅读器)。如果我误解了您的问题,请告诉我。
-
IMO 在视图中执行这种逻辑与 JSP 的用途背道而驰;视图层应该尽可能的愚蠢。以这种方式进行测试也更加困难。任何进入视图层的东西都是模型的一部分,无论它是通过上下文暴露,还是一个“官方”模型对象等等。当然,我也认为将它保存在一个巨大的 HTML 文件中也不是很棒。 YMMV。
-
@DaveNewton 感谢您的反馈。这真是一个大实验。我们的里程可能很容易为 0。
标签: java jsp xpath import jstl