0

您好,每次在网页上输入时,我都会在服务器控制台中收到以下信息:f:view contracts attribute found, but not used at top level.

我正在使用 jsf 模板,并且我有一个这样的 default.xhtml 模板文件:

<!DOCTYPE html>
<html ...xmlns...>
<f:view contracts="default" locale="#{bbClevcore.locale}">
  <h:head>
    ...
  </h:head>
  <h:body id="body">
    <header>
      ...
    </header>

    <section>
      <h:panelGroup layout="block">
        <h:panelGroup id="section" layout="block">
          <ui:insert name="section" />
        </h:panelGroup>
      </h:panelGroup>
    </section>

    <footer>
      ...
    </footer>
    </ui:insert>

  </h:body>
</f:view>
</html>

我有以下合同目录:

-src/main/webapp/contracts/default/common/css/main.css

而在实际页面中:index.xhtml

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
    xmlns:f="http://xmlns.jcp.org/jsf/core"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
    xmlns:cc="http://xmlns.jcp.org/jsf/composite/components"
    template="/templates/default.xhtml">
    ...
    <ui:define name="section">
       ....
    </ui:define>
</ui:composition>

合同有效,因为当我将合同值从默认更改为说替代,在替代文件夹中有另一个 main.css 时,页面会进行更改并显示替代样式。我在正确的位置使用 f:view 吗?

谢谢

4

1 回答 1

0

无法在全局模板中设置合同。JSF 只允许在第一个请求的文件(模板客户端)中设置它。尝试这个!

模板:

<!DOCTYPE html>
<html ...xmlns...>
  <h:head>
    ...
  </h:head>

  <h:body id="body">
    <header>
      ...
    </header>

    <section>
      <h:panelGroup layout="block">
        <h:panelGroup id="section" layout="block">
          <ui:insert name="section" />
        </h:panelGroup>
      </h:panelGroup>
    </section>

    <footer>
      ...
    </footer>

  </h:body>
</html>

模板-客户端:

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://xmlns.jcp.org/jsf/core"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets">

    <f:view contracts="alternative">
        <ui:composition template="/templates/default.xhtml">
            ...
            <ui:define name="section">
               ....
            </ui:define>
            ...
        </ui:composition>
    </f:view>

</ui:composition>
于 2016-02-26T09:49:37.097 回答