34

我正在尝试在其他计算机上的 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>
4

2 回答 2

36

此 XML 文件似乎没有任何与之关联的样式信息。文档树如下所示。

text/xml当客户端(Web 浏览器)出于某种原因将表示 HTML 文档的 HTTP 响应内容解释为text/htmlnot 并且解析的 XML 树没有任何XML-stylesheet时,您将在客户端收到此消息。换句话说,由于 HTTP 响应内容类型丢失或不正确,Web 浏览器将检索到的 HTTP 响应内容解析为 XML 而不是 HTML。

对于具有默认扩展名的 JSF/Facelets 文件,如果.xhtmlHTTP 请求没有调用FacesServlet源代码。然后,Firefox 只是根据.xhtml您的 Firefox 配置中的文件扩展名猜测 HTTP 响应内容类型,显然默认解释为text/xml.

您需要确保 HTTP 请求 URL(如您在浏览器地址栏中看到的)与webapp 中注册的<url-pattern>URL匹配,以便调用它并能够根据 XHTML 源代码生成所需的 HTML 输出。如果是 例如,那么您需要打开页面而不是。或者,您也可以将 更改为。这样,您就无需摆弄虚拟 URL。FacesServletweb.xml*.jsf/some.jsf/some.xhtml<url-pattern>*.xhtml

也可以看看:


因此请注意,您实际上并不需要 XML 样式表。在您的特定情况下,这只是网络浏览器的一种误解,同时试图尽最大努力从检索到的 HTTP 响应内容中制作出一些可呈现的内容。

于 2013-02-11T13:03:18.110 回答
10

将 xmlns="http://www.w3.org/2000/svg" 属性添加到 svg 标记的开头,如下所示:<svg xmlns="http://www.w3.org/2000/svg"

于 2021-08-11T21:45:59.863 回答