我正在尝试在其他计算机上的 Apache Tomcat 上运行我的 Eclipse JSF 项目。
我创建了一个 WAR 文件本教程。但是,当我部署 WAR 并在 Firefox 中打开 Facelet 页面时,我仅收到以下错误消息:
该 XML 文件似乎没有任何与之关联的样式信息。文档树如下所示。
这是我第一次尝试在没有 Eclipse 的情况下运行我的 JSF 应用程序。这是如何引起的以及如何解决?
我实际上正在尝试打开以下 Facelet 页面:
<?xml version="1.0" encoding="UTF-8"?>
<ui:composition template="/WEB-INF/templates/template_a.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets">
<ui:define name="title">
tytol
</ui:define>
</ui:composition>
该 XML 文件似乎没有任何与之关联的样式信息。文档树如下所示。
当客户端(Web 浏览器)出于某种原因将表示 HTML 文档的 HTTP 响应内容解释为text/xml
代替text/html
并且解析后的 XML 树没有任何XML样式表。换句话说,由于 HTTP 响应内容类型缺失或不正确,Web 浏览器将检索到的 HTTP 响应内容解析为 XML,而不是 HTML。
如果 JSF/Facelets 文件的默认扩展名为.xhtml
,如果 HTTP 请求没有调用FacesServlet
因此它无法解析 Facelets 文件并根据 XHTML 源代码生成所需的 HTML 输出。然后,Firefox 只是根据以下内容猜测 HTTP 响应内容类型:.xhtml
Firefox 配置中的文件扩展名显然默认解释为text/xml
.
您需要确保您在浏览器地址栏中看到的 HTTP 请求 URL 与<url-pattern>
of the FacesServlet
在 webapp 中注册的web.xml
,这样它将被调用并能够基于 XHTML 源代码生成所需的 HTML 输出。如果是举例的话*.jsf
,那么你需要通过以下方式打开页面/some.jsf
代替/some.xhtml
。或者,您也可以只更改<url-pattern>
to *.xhtml
。这样您就无需摆弄虚拟 URL。
也可以看看:
- 有时我看到 JSF URL 是 *.jsf,有时是 *.xhtml,有时是 /faces/*。为什么?
- JSF 返回带有纯/原始 XHTML/XML/EL 源的空白/未解析页面,而不是呈现的 HTML 输出
因此请注意,您实际上并不需要 XML 样式表。在您的具体情况下,这只是网络浏览器的误解,同时试图尽力使检索到的 HTTP 响应内容变得可呈现。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)