在POST上呈现的页面缺少DOCTYPE

时间:2012-06-20 16:54:45

标签: jsf-2 facelets cdi mojarra

我正在经历一种疲惫的行为(至少在我眼里)。

当我从包含include的模板发帖时,不知何故丢失了DOCTYPE和html-tag。

假设我在使用包含widget.xhtml的template1.xhtml的home1.xhtml上进行了GET。现在我在home2.xhtml上发布一个POST。现在共识缺少DOCTYPE和html-tag。

如果我

  • 直接在home2.xhtml或

  • 上进行GET
  • 将template1.xhtml中的include替换为include的内容并执行POST

DOCTYPE和html-tag在预期的响应中。

home1.xhtml:

<ui:composition xmlns="http://www.w3.org/1999/xhtml" 
                xmlns:ui="http://java.sun.com/jsf/facelets"
                template="template1.xhtml">
  <ui:define name="content">

  </ui:define>
</ui:composition>

template1.xhtml:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" 
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets" >
<h:head>
</h:head>
<h:body>
  Called with GET
  <ui:include src="widget.xhtml" />
  <h:form>
    <h:commandLink action="#{homeBean2.show}" value="POST" />
  </h:form>
</h:body>
</html>

wigdet.xhtml:

<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:h="http://java.sun.com/jsf/html" >
  <h:form id="someForm">
  </h:form>
</ui:composition>

home2.xhtml:

<ui:composition xmlns="http://www.w3.org/1999/xhtml" 
                xmlns:ui="http://java.sun.com/jsf/facelets"
                template="template2.xhtml">
  <ui:define name="content">
    POST 1
  </ui:define>
</ui:composition>

template2.xhtml:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" 
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets" >
<h:head>
</h:head>
<h:body>
    template 2
</h:body>
</html>

如何让DOCTYPE和html-tag显示在呈现的页面中?

任何提示我在这里缺少什么?

强尼

1 个答案:

答案 0 :(得分:2)

它看起来像一个bug。请参阅http://java.net/jira/browse/JAVASERVERFACES-2453