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

Krz*_*iek 17 xml eclipse jsf facelets

我正在尝试在其他计算机上的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>
Run Code Online (Sandbox Code Playgroud)

Bal*_*usC 23

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

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

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

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

也可以看看:


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


Jua*_*rce 23

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