【发布时间】:2012-05-27 08:43:31
【问题描述】:
我有一个包含另一个 HTML 页面的 JSP 页面。后者有以下内容:
<html>
<body>
<ul>
<li>
<a href="/TutorWebApp/page/common/login.jsp">${startPage}</a>
</li>
</ul>
</body>
</html>
这个 html 文件是从 xml 转换而来的结果 xslt
<?xml version="1.0" encoding="UTF-8"?>
<testing>
<menu>
<menu-item>
<title>${startPage}</title>
<url>/TutorWebApp/page/common/login.jsp</url>
</menu-item>
</menu>
</testing>
还有帮助样式表
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<body>
<ul>
<xsl:apply-templates/>
</ul>
</body>
</html>
</xsl:template>
<xsl:template match="menu-item">
<li>
<a>
<xsl:attribute name="href">
<xsl:value-of select="url"/>
</xsl:attribute>
<xsl:value-of select="title"/>
</a>
</li>
</xsl:template>
</xsl:stylesheet>
我通过使用 JSTL 的 c:import 标记来包含 HTML 页面(我使用 jspf -header 和 footer,并且库包含在 header 中)。
<fmt:bundle basename="by.epam.testing.resource.content" prefix="content.">
<fmt:message key="inputinfo" var="InputInfo"/>
<fmt:message key="exit" var="Exit"/>
<fmt:message key="startPage" var="StartPage"/>
</fmt:bundle>
<div class="left">
<c:if test="${role eq 'Tutor'}">
<c:import url="/page/menuForTutor.html" charEncoding="UTF-8"/>
</c:if>
<c:if test="${role eq 'Student'}">
<c:import url="/page/menuForStudent.html" charEncoding="UTF-8"/>
</c:if>
</div>
问题是我得到以下输出。 IE。 JSP 变量名没有扩展。
有什么办法可以解决这个问题吗?谢谢。
【问题讨论】:
-
HTML 文件是静态文件,JSP 编译器不会解释这些文件。您不能在 HTML 文件中使用 JSP EL。此外,另一个 HTML 页面中的完整 HTML 页面是无效的 HTML。
-
Ray,HTML 页面中的 HTML 页面对于刚接触 Java 模板的人来说是一个常见的错误。虽然它现在看起来并不重要,但我强烈建议你也花一些时间在 HTML/CSS/JS 技能上。我认为您不需要成为它们方面的专家,但是从长远来看,了解 HTML 中有效内容的基础知识将为您带来很多好处。祝你好运! :)
-
澄清一下,您可以在另一个 JSP 页面中包含一个 部分 JSP 页面,只要在浏览器源代码中生成和可见的是生成的、有效的单个 HTML 文档。
-
@jmort253 如果我使用从xml到jsp的xslt转换,我可以在包含的页面中使用el-expression吗?
-
@Ray:不(或者至少,效率极低):如果您不断更改 JSP,容器将不得不一次又一次地编译它。不应生成 JSP。