2015-06-21 51 views
1

是否可以在<ui:include>內寫入<ui:insert>?當我嘗試使用<ui:define name="jsInclude">時,內容不可見。當使用JSF 1.2進行嘗試時,這是可行的,但不適用於JSF 2.2。ui:在ui中插入:include不起作用

任何人都可以幫助我理解我在JSF 2.2中的模板概念所缺少的東西嗎?

謝謝!

下面是我的代碼

這是模板文件

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:ui="http://xmlns.jcp.org/jsf/facelets"> 

    <head> 
     <title><ui:insert name="browserTitle">My Page</ui:insert></title> 
     <ui:insert name="head"></ui:insert> 
     <ui:include src="myIncludeFile.xhtml" /> 
    </head> 

    <body> 
     <div class="mainContent"> 
      <!-- START OF BODY CONTENT //--> 
      <ui:insert name="body">Default Body</ui:insert> 
      <!-- END OF BODY CONTENT //--> 
     </div> 
    </body> 
</html> 

這是包含文件

<span xmlns:ui="http://xmlns.jcp.org/jsf/facelets"> 
    <ui:composition> 
     <ui:insert name="jsInclude"></ui:insert> 
    </ui:composition> 
</span> 

下面是主要的客戶端頁面

<!DOCTYPE HTML> 
<html 
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets"> 
    <ui:composition template="../templates/myTemplate.xhtml"> 

     <ui:define name="browserTitle">My Page</ui:define> 

     <ui:define name="head"> 
      This is head 
     </ui:define> 

     <ui:define name="jsInclude"> 
      This is js include! 
     </ui:define> 

     <ui:define name="body"> 
      This is body! 
     </ui:define> 
    </ui:composition> 
</html> 
+0

您需要''內部''如'。這些模板頁面應該放置在WEB-INF目錄下,以便它們不被提供給客戶端,如果他們要求使用相應URL的模板頁面。 – Tiny

+1

嘗試將包含的文件更改爲' ... ' –

+0

我面臨同樣的問題,我試圖提取一個包含很多primefaces控件的頭文件,使其更易讀。我嘗試了上述兩種解決方案,兩者都不起作用。如果我能解決問題,我會發布解決方案。 –

回答