使用JSF2输出HTML5代码

使用JSF2输出HTML5代码,html,jsf-2,doctype,Html,Jsf 2,Doctype,我试图输出一个兼容HTML5的页面,但JSF生成了一个XML prolog。我怎样才能防止这种情况 index.xhtml <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html

我试图输出一个兼容HTML5的页面,但JSF生成了一个XML prolog。我怎样才能防止这种情况

index.xhtml

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    template="/WEB-INF/templates/layout.xhtml">

</ui:composition>
<!DOCTYPE html>
<html xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:f="http://java.sun.com/jsf/core">
<f:view locale="#{userContext.locale}">
    <h:head>
        ...
    </h:head>
    <h:body>
        ...
    </h:body>
</f:view>
</html>
<ui:composition template="/WEB-INF/templates/layout.xhtml"
...
      xmlns:myapp="http://myapp.com/jsf/core">

layout.xhtml

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    template="/WEB-INF/templates/layout.xhtml">

</ui:composition>
<!DOCTYPE html>
<html xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:f="http://java.sun.com/jsf/core">
<f:view locale="#{userContext.locale}">
    <h:head>
        ...
    </h:head>
    <h:body>
        ...
    </h:body>
</f:view>
</html>
<ui:composition template="/WEB-INF/templates/layout.xhtml"
...
      xmlns:myapp="http://myapp.com/jsf/core">

...
...
生成的输出

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html><head>...

...

我正在使用Mojarra 2.2.5。

我理解这个问题。我简化了上述示例,但我也以以下方式包括复合组件:

index.xhtml

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    template="/WEB-INF/templates/layout.xhtml">

</ui:composition>
<!DOCTYPE html>
<html xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:f="http://java.sun.com/jsf/core">
<f:view locale="#{userContext.locale}">
    <h:head>
        ...
    </h:head>
    <h:body>
        ...
    </h:body>
</f:view>
</html>
<ui:composition template="/WEB-INF/templates/layout.xhtml"
...
      xmlns:myapp="http://myapp.com/jsf/core">

myapp复合版

<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:composite="http://java.sun.com/jsf/composite"
    xmlns:p="http://primefaces.org/ui">
...

...

不幸的是,
myapp
中的一个复合文件声明了一个XML prolog。出于一个我不理解的原因,使用声明XML prolog的组合将XML prolog添加到主文件中。

我像您一样这样做,但有两个不同之处:1)谢谢。你的话有帮助!我试图清理代码并重新开始一些简单的工作,但当我添加复合组件时,它就停止了工作。