我有一个非常简单的页面模板定义"af:pageTemplateDef" (TemplateAdmin4.jsf)。正如你所看到的,模板根包含一个panelStretchLayout,它应该使模板拉伸到其父(垂直和水平)。
<?xml version='1.0' encoding='UTF-8'?>
<af:pageTemplateDef xmlns:af="http://xmlns.oracle.com/adf/faces/rich" var="attrs" definition="private"
xmlns:afc="http://xmlns.oracle.com/adf/faces/rich/component" xmlns:f="http://java.sun.com/jsf/core">
<af:xmlContent>
<afc:component>
<afc:display-name>TemplateAdmin4</afc:display-name>
</afc:component>
</af:xmlContent>
<af:panelStretchLayout id="pt_psl1">
<f:facet name="center">
<af:panelAccordion id="pa1">
<af:showDetailItem text=" Getting started DATASOURCES" id="sdi1">
<af:outputText value="Here are a few things that can get you started." id="ot3"/>
</af:showDetailItem>
</af:panelAccordion>
</f:facet>
</af:panelStretchLayout>
</af:pageTemplateDef>
我有.jsf page (ErrorPage.jsf),我在上面放置了模板,您可以看到<房颤:pageTemplate viewId="/TemplateAdmin4。jsf " id=" pt2 " xmlns:房颤="#unknown" />
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<f:view xmlns:f="http://java.sun.com/jsf/core" xmlns:af="http://xmlns.oracle.com/adf/faces/rich">
<af:document title="ErrorPage.jsf" id="d1">
<af:form id="f1">
<af:panelStretchLayout id="psl1">
<f:facet name="center">
<af:panelSplitter id="ps1">
<f:facet name="first">
<af:navigationPane id="np1">
<af:commandNavigationItem text="commandNavigationItem 1" id="cni1"/>
</af:navigationPane>
</f:facet>
<f:facet name="second">
<af:pageTemplate viewId="/TemplateAdmin4.jsf" id="pt2"/>
</f:facet>
</af:panelSplitter>
</f:facet>
</af:panelStretchLayout>
</af:form>
</af:document>
</f:view>
最后,我放置的模板没有拉伸到页面中。为什么会发生这种情况?如您所见,我在ErrorPage中放置了一个panelStrechLayout。jsf页面。和一个pannelSplitter在里面(它的DimensionsForm也被设置为parent)。
我注意到,如果我使用嵌套模板,我没有这个问题。我的意思是,如果使用模板内部的其他模板定义(pageTemplateDef)。这就是我解决问题的方法
在af:panelStretchLayout的样式类中使用AFStretchWidth
我遇到了同样的问题,并通过将styleClass="AFVisualRoot"添加到模板中的根af:panelStretchLayout组件来修复它。