打开Facelets页面错误,“此XML文件似乎没有与之关联的任何样式信息”。

时间:2013-02-11 00:49:32

标签: xml eclipse jsf facelets

我正在尝试在其他计算机上的Apache Tomcat上运行我的Eclipse JSF项目。 我用this tutorial创建了一个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>

3 个答案:

答案 0 :(得分:22)

  

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

当客户端(webbrowser)由于某种原因将HTTP响应内容解释为text/xml而不是text/html并且解析的XML树没有任何内容时,客户端会出现此错误XML-stylesheet。换句话说,由于HTTP响应内容类型错误或缺失,Web浏览器错误地将检索到的HTTP响应内容解析为XML而不是HTML。

如果JSF / Facelets文件的默认扩展名为.xhtml,那么如果HTTP请求未调用FacesServlet,则可能会发生这种情况,因此无法解析Facelets文件并根据XHTML源代码生成所需的HTML输出。 Firefox只是根据.xhtml文件扩展名猜测HTTP响应内容类型,该文件扩展名在Firefox配置中显然默认解释为text/xml

您需要确保您在浏览器的地址栏中看到的HTTP请求网址与在webapp的<url-pattern>中注册的FacesServlet的{​​{1}}相匹配,以便它被调用并能够基于XHTML源代码生成所需的HTML输出。如果是web.xml,那么您需要按*.jsf而不是/some.jsf打开该页面。或者,您也可以将/some.xhtml更改为<url-pattern>。这样您就不需要使用虚拟URL。

另见:


因此请注意,您实际上并不需要XML样式表。这一切只是在试图尽力使用检索到的HTTP响应内容中呈现出一些东西时,对webbrowser的误解。它实际上应该检索到正确生成的HTML输出,Firefox肯定知道如何处理HTML内容。

答案 1 :(得分:0)

将 xmlns="http://www.w3.org/2000/svg" 属性添加到 svg 标签的开头,如下所示:Sub RefreshQueries() Dim counter As Byte counter = 0 'Range with query names Dim rQueries As Range Dim rQuery As Range Dim wsQueries As Worksheet Set wsQueries = ThisWorkbook.Worksheets("Query list") Set rQueries = wsQueries.Range("a2:a" & wsQueries.Range("a1048576").End(xlUp).Row) wsQueries.Range("b1") = "Refreshed" For Each rQuery In rQueries If counter = 10 Then Exit For 'if more than 10 queries refreshed then exit loop 'If query is refreshed then omit it and go to next If rQuery.Offset(0, 1) <> "Yes" Then ThisWorkbook.Connections(rQuery.Value).Refresh rQuery.Offset(0, 1) = "Yes" counter = counter + 1 End If Next rQuery End Sub

答案 2 :(得分:-1)

如果您正在使用Eclipse,那么有很多简单的方法可以创建战争。 1-右键单击您的项目 2-然后选择Export-&gt; WAR File 3-它将显示Web项目名称,现在提供您要保存war文件的目的地。 4-如果要导出源文件,请选中导出源文件选项。 5-然后点击完成。

多数民众赞成你将获得你的项目战争文件并复制此战争并放入Tomcat Webapps目录并启动服务器。