2011-10-18 151 views
3

我想在我的視圖中使用<f:loadBundle>標記。我知道我可以在faces-config.xml之內聲明它,但出於某種原因,我想在我看來使用它。我以這種方式使用標籤,但它不起作用。我在<ui:composition>標籤內使用它。如何在<ui:composition>標記內使用<f:loadBundle>標記

<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'標籤和'template'屬性。 Facelets刪除標籤之外的所有標籤 - 即doctype聲明,html,標題和正文標籤。這是必要的,因爲<ui:composition>被替換爲包含它自己的一組html,head,title和body標籤的模板。

如果我想用我的屬性文件頭部分,那我該怎麼使用呢?由於頭部位於<ui:composition>標記之外。我的意思是說,如果我想這樣做

<h:head> 
    <title>#{msgs.indexWindowTitle}</title> 
</h:head> 

那麼我該如何使用我的屬性文件外<ui:composition>

回答

2

這確實不行。改變你的主模板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">

+0

嗨thnaks,對不起已故的答覆。非常感謝你 :) ;) – Basit

0

我已經在上鑽嘴魚科的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內裝飾:成分標籤很適合我,因爲我經常要聲明一個F:是由所有的共享loadBundle標記自己嵌套ui:define的。不知道什麼樣的額外的陰謀,我做我這樣做的時候,不過內核做,或者如果我開發一個完全執行該規範得到我想要的東西。因人而異