打开 JSF Facelet 页面显示"此 XML 文件似乎没有任何与之关联的样式信息"。



我正试图在其他计算机上的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,从而无法解析Facelet文件并基于XHTML源代码生成所需的HTML输出,则可能会发生这种情况。Firefox只是根据.xhtml文件扩展名猜测HTTP响应内容类型,在您的Firefox配置中,默认情况下,该文件扩展名显然被解释为text/xml

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

另请参阅:

  • 有时我看到JSF URL是*.JSF,有时是*.xhtml,有时是/faces/*。为什么
  • JSF返回带有纯/原始XHTML/XML/EL源代码的空白/未解析页面,而不是呈现的HTML输出

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

添加xmlns="http://www.w3.org/2000/svg"注意svg标签的开头,如下所示:<svg xmlns="http://www.w3.org/2000/svg"

相关内容

  • 没有找到相关文章

最新更新