在<af:decorativebox>

时间:2015-05-04 13:02:16

标签: jsf jsf-2 facelets oracle-adf

我使用Facelets将JSF 1.2从JSP转移到JSF 2.1。

我使用oracle ADF Faces作为组件库。

我的主页面布局不再适用于Facelets。

这是我的布局:

<af:form id="mainForm">
    <af:decorativeBox theme="medium" styleClass="AFVisualRoot">
    <f:facet name="center">
        <!-- Main page -->
        <af:panelStretchLayout topHeight="35" bottomHeight="20" >                       
        <!-- Top menu -->
        <f:facet name="top">
            <af:panelStretchLayout endWidth="255" startWidth="100%">
            <f:facet name="end">    
            </f:facet> 
            <f:facet name="start">
            </f:facet>
            </af:panelStretchLayout>                            
        </f:facet>
        <!-- Page footer -->
        <f:facet name="bottom">
            <af:region id="footerRegion" showHeader="never"
                   value="#{main.footerModel}" />
        </f:facet>
        <!-- Page body -->
        <f:facet name="center">
            <af:panelSplitter orientation="horizontal"
                      splitterPosition="450">
            <f:facet name="first">
                <af:region id="browserRegion" showHeader="never"
                       value="#{main.browserModel}" />
            </f:facet>
            <f:facet name="second">
                <af:region id="contentRegion" showHeader="never"
                       value="#{main.contentModel}" />
            </f:facet>
            </af:panelSplitter>
        </f:facet>
        </af:panelStretchLayout>
    </f:facet>
    </af:decorativeBox>
</af:form>

正如在documentation中所说的那样,装饰框的中心方面“这个方面不支持facelets中的多个构面组件

如果我还想使用Facelets,如何进行页面布局并仍然可以从decorativeBox中受益?

更新: 我的问题来自于使用<ui:include>内部方面:

<!-- Top menu -->
<f:facet name="top">
  <af:panelStretchLayout endWidth="255" startWidth="100%">
    <f:facet name="end">    
    </f:facet> 
    <f:facet name="start">
      <ui:include src="/components/menu.xhtml" />
    </f:facet>
  </af:panelStretchLayout>                          
</f:facet>

这是menu.xhtml的一部分:

<?xml version='1.0' encoding='UTF-8'?>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:trh="http://myfaces.apache.org/trinidad/html"
    xmlns:tr="http://myfaces.apache.org/trinidad"
    xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
    xmlns:afh="http://myfaces.apache.org/trinidad/html">

    <af:menuBar id="headerMenuBar">
      <!-- Menu Item -->
    </af:menuBar>
</ui:composition>

在ADF组件中使用Facelet包含页面的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

我已经使用facelets和jspx测试了你的布局,我得到了相同的结果:两者都在工作。

你的问题在别处。

问题更新后

更新:

在ADF中应避免使用

<ui:include>标记,请参阅Regex Demo