在 <af:decorativeBox> 的中心面使用 <ui:include>
Using <ui:include> in center facet of <af:decorativeBox>
我从使用 JSP 的 JSF 1.2 迁移到使用 Facelets 的 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,如何进行页面布局并仍然受益于 decorativeBox?
更新:
我的问题来自使用 <ui:include>
inside facets :
<!-- 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 包含页面的正确方法是什么?
我已经用 facelets 和 jspx 测试了你的布局,我得到了相同的结果:两者都有效。
你的问题在别处。
问题更新后更新:
<ui:include>
标签应避免在 ADF 中使用,请参阅 Programming Best Practices - ADF Faces & JavaScript
我从使用 JSP 的 JSF 1.2 迁移到使用 Facelets 的 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,如何进行页面布局并仍然受益于 decorativeBox?
更新:
我的问题来自使用 <ui:include>
inside facets :
<!-- 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 包含页面的正确方法是什么?
我已经用 facelets 和 jspx 测试了你的布局,我得到了相同的结果:两者都有效。
你的问题在别处。
问题更新后更新:
<ui:include>
标签应避免在 ADF 中使用,请参阅 Programming Best Practices - ADF Faces & JavaScript