我想在我的视图中使用<f:loadBundle>
标记。我知道我可以在faces-config.xml
内声明它,但出于某种原因我想在我看来使用它。我以这种方式使用标签,但它不起作用。我在<ui:composition>
标记内使用它。
<h:head>
<title>Email Content</title>
</h:head>
<h:body>
<ui:composition template="./WEB-INF/templates/layout.xhtml">
<ui:define name="content">
<f:loadBundle basename="presentationBeans.homepage.messages" var="msgs"/>
<h:form id="emailContent_Review" >
<p:growl id="growl" showDetail="true" />
<p:panel id="panel"
header="#{msgs.ECR_panelHeader}"
style="border-color: #000000;width: 960px;position: absolute;left: 150px;height: 370px" >
<p:dataTable value="#{emailContent_Review.emailContent}"
var="emailContent"
selection="#{emailContent_Review.selectedEmailContent}"
emptyMessage="#{msgs.ECR_tableEmptyMessage}"
widgetVar="portalsTable"
rows="8" height="350" paginator="true">
<f:facet name="header" >
</f:facet>
</p:dataTable>
</p:panel>
</h:form>
</ui:define>
</ui:composition>
</h:body>
我做错了什么?我也读过那个
要使用模板,请使用带有“模板”属性的“ui:composition”标记。 Facelets删除标记外的所有标记 - 即doctype声明,html,head,title和body标记。这是必要的,因为
<ui:composition>
被替换为包含其自己的html,head,title和body标记集的模板。
如果我想在head部分使用我的属性文件,那么我该如何使用它?因为头部位于<ui:composition>
标记之外。我的意思是说,如果我想这样做
<h:head>
<title>#{msgs.indexWindowTitle}</title>
</h:head>
然后如何在<ui:composition>
之外使用我的属性文件?
答案 0 :(得分:5)
这确实无法奏效。更改主模板layout.xhtml
以通过模板插入占位符替换标题:
<h:head>
<title><ui:insert name="title">Default title</ui:insert></title>
</h:head>
然后更改模板客户端以定义它:
<ui:composition template="./WEB-INF/templates/layout.xhtml">
<ui:define name="title">
<f:loadBundle basename="presentationBeans.homepage.messages" var="msgs"/>
#{msgs.indexWindowTitle}
</ui:define>
<ui:define name="content">
...
</ui:define>
</ui:composition>
请注意,您无需为<f:loadBundle>
重复<ui:define name="content">
。
答案 1 :(得分:0)
我已经在Mojarra 2.1.x上采用了一种对我来说很有效的方法,或者让它翻滚。调整@BalusC的例子:
<ui:composition>
<f:loadBundle basename="presentationBeans.homepage.messages" var="msgs"/>
<ui:decorate template="./WEB-INF/templates/layout.xhtml">
<ui:define name="title">
#{msgs.indexWindowTitle}
</ui:define>
<ui:define name="content">
...
</ui:define>
</ui:decorate>
</ui:composition>
我嵌套模板化ui的方法:在我的裸ui:composition标签中装饰对我来说效果很好,因为我经常想要声明一个f:loadBundle标签,它由我所有嵌套的ui:define共享。不确定当我这样做时,我正在做什么样的额外机制,或者如果我正在利用规范的不完整实现来获得我想要的东西。 YMMV