doctype没有在JSF" master"中呈现模板

时间:2017-08-06 21:59:49

标签: jsf primefaces mojarra payara jsf-2.3

正如主题所说,所需的doctype不会在我的JSF页面中呈现。我用过的版本:

  • Payara Server Payara Server 4.1.2.181 #badassfish(build 220)]]
  • Mojarra 2.3.3(20171008-2230 673408fa9199477d87f44521ff873d709128c88b)
  • PrimeFaces 6.2("官方"版本)

我已经尝试过捆绑的(2.2.14 / 13/15?)版本,没有变化,所以我从github(官方发布)升级到2.3.3。

在我的整个项目中,我只有一个doctype,而且在我的#34; master"模板:

base.tpl

<?xml version="1.0" encoding="UTF-8" ?>
<ui:composition 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://xmlns.jcp.org/jsf/facelets"
                xmlns:p="http://primefaces.org/ui"
                xmlns:pm="http://primefaces.org/mobile">

    <h:doctype rootElement="html" public="-//W3C//DTD XHTML 1.0 Transitional//EN" system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>

    <html lang="#{localizationController.locale.language}" xml:lang="#{localizationController.locale.language}" xmlns="http://www.w3.org/1999/xhtml">
        <f:view locale="#{localizationController.locale}" contentType="text/html" />
        <h:head>
            <f:facet name="first">
                <ui:insert name="metadata" />

                <meta http-equiv="X-UA-Compatible" content="IE=edge" />
                <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
                <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1.0, maximum-scale=1.0"/>
                <meta name="apple-mobile-web-app-capable" content="yes" />
            </f:facet>

            <f:loadBundle var="msg" basename="org.mxchange.localization.generic" />
            <f:loadBundle var="project" basename="org.mxchange.localization.project" />
            <f:loadBundle var="local" basename="org.mxchange.localization.local" />

            <h:outputStylesheet name="/css/custom.css" />

            <title>
                <h:outputText value="#{initParam['project_title']} - " />

                <ui:insert name="document_title">
                    <h:outputText value="Default document title" />
                </ui:insert>
            </title>
        </h:head>

        <h:body>
            <pm:page id="master">
                <h:panelGroup styleClass="ui-fluid" layout="block">
                    <pm:header>
                        <h:panelGroup layout="block">
                            <h:panelGroup styleClass="page-header" layout="block">
                                <h1>
                                    <h:outputText value="#{initParam['project_title']} - " />

                                    <ui:insert name="content_header">
                                        <h:outputText value="Default header title" />
                                    </ui:insert>
                                </h1>
                            </h:panelGroup>

                            <h:panelGroup styleClass="page-content-gap" layout="block">
                            </h:panelGroup>
                        </h:panelGroup>
                    </pm:header>

                    <h:panelGroup styleClass="ui-g" layout="block">
                        <h:panelGroup styleClass="ui-g-12 ui-md-2" layout="block">
                            <ui:insert name="menu">
                                <h:outputText value="Default menu" />
                            </ui:insert>

                            <ui:include src="/WEB-INF/templates/widgets/locale_change_widget.tpl" />
                        </h:panelGroup>

                        <h:panelGroup styleClass="ui-g-12 ui-md-10 ui-g-nopad" layout="block">
                            <h:panelGroup styleClass="ui-g-12 ui-g-nopad">
                                <ui:insert name="content">
                                    <h:outputText value="Default content" />
                                </ui:insert>
                            </h:panelGroup>
                        </h:panelGroup>

                        <h:panelGroup styleClass="ui-g-12 page-footer" layout="block">
                            <ui:insert name="footer">
                                <h:outputText value="Default footer" />
                            </ui:insert>
                        </h:panelGroup>
                    </h:panelGroup>

                    <h:panelGroup styleClass="error-container" layout="block">
                        <p:growl showDetail="true" sticky="true">
                            <p:autoUpdate />
                        </p:growl>

                        <p:ajaxExceptionHandler
                            type="javax.faces.application.ViewExpiredException"
                            update="exceptionDialog"
                            onexception="PF('exceptionDialog').show();"
                            />

                        <p:dialog id="exceptionDialog" closable="true" closeOnEscape="true" header="Exception '#{pfExceptionHandler.type}' occured!" widgetVar="exceptionDialog"
                                  height="500px">
                            <div class="para">
                                <h:outputText value="#{msg.EXCEPTION_MESSAGE}:" />
                                <h:outputText value="#{pfExceptionHandler.message}" />
                            </div>

                            <div class="para">
                                <h:outputText value="#{msg.EXCEPTION_STACK_TRACE}:" />
                                <h:outputText value="#{pfExceptionHandler.formattedStackTrace}" escape="false" />
                            </div>

                            <div class="para">
                                <p:button onclick="window.location.href = document.location.href;"
                                          value="#{msg.RELOAD_PAGE}"
                                          rendered="#{pfExceptionHandler.type == 'javax.faces.application.ViewExpiredException'}" />
                            </div>
                        </p:dialog>
                    </h:panelGroup>
                </h:panelGroup>
            </pm:page>
        </h:body>
    </html>
</ui:composition>

许多JSF页面如下所示:

some_guest_page.xhtml

<?xml version="1.0" encoding="UTF-8" ?>
<ui:composition template="/WEB-INF/templates/guest/guest_base.tpl"
                xmlns="http://www.w3.org/1999/xhtml"
                xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
                xmlns:h="http://xmlns.jcp.org/jsf/html"
                xmlns:f="http://xmlns.jcp.org/jsf/core">

    <ui:define name="guest_title">
        <h:outputText value="#{msg.PAGE_TITLE_INDEX_FOO}" />
    </ui:define>

    <ui:define name="content_header">
        <h:outputText value="#{msg.CONTENT_TITLE_INDEX_FOO}" />
    </ui:define>

    <ui:define name="content">
        <!-- @TODO Here goes your content. //-->
    </ui:define>
</ui:composition>

提到的guest_base.tpl是实际页面和我的&#34; master&#34;之间的一层。模板:

guest_base.tpl

<?xml version="1.0" encoding="UTF-8" ?>
<ui:composition
    template="/WEB-INF/templates/base.tpl"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
    xmlns:h="http://xmlns.jcp.org/jsf/html">

    <ui:define name="document_title">
        <ui:insert name="document_guest_title">
            <h:outputText value="Default guest title" />
        </ui:insert>
    </ui:define>

    <ui:define name="menu">
        <ui:fragment rendered="#{featureController.isFeatureEnabled('guest_menu')}">
            <ui:include src="/WEB-INF/templates/guest/guest_menu.tpl" />
        </ui:fragment>
    </ui:define>

    <ui:define name="footer">
        <ui:include src="/WEB-INF/templates/guest/guest_footer.tpl" />
    </ui:define>
</ui:composition>

热烈欢迎任何关于如何解决这个问题的想法。 : - )

更新 稍微修正了base.tpl。现在至少再次正确加载语言环境。 f:view似乎也至少覆盖了h:headh:bodyf:loadBundle,这是有道理的:

  • f:view组件设置区域设置
  • f:loadBundle使用设置的区域设置关联消息包
  • 加载

但是现在,仍然存在主要问题,doctype仍未出现。

0 个答案:

没有答案