2010-08-25 119 views
3

我是JSF新手,目前我正在運行帶有tomcat和Primefaces的JSF 2.0。我用primefaces layoutUnit和primefaces菜單創建了一個簡單的頁面。我有三個面板佈局,左側面板中的菜單,中間的主要頁面以及右側面板中的一些度量/圖形。我在理解如何爲主面板創建單獨視圖時遇到問題,在選擇適當的菜單工具項時將查看這些視圖。我想使用ajax,所以沒有頁面刷新,所以我只是想創建一些東西,如果我有一個「用戶」工具,當我點擊它時,用戶視圖將出現在中央面板中,同樣如果我有一個配置工具,我想要顯示配置視圖。我試圖爲每個視圖創建單獨的layoutUnits,然後使用rendered =「」在單擊某個工具時呈現它,但這不起作用。任何人都可以通過正確的方式闡明這一點嗎?我在網上找不到任何例子。謝謝。JSF 2.0菜單導航問題

回答

1

您應該嘗試根據模板思考您的Web應用程序並使用Facelets模板功能。 (您使用的是哪個版本的JSF?嘗試使用JSF2 ...)。

您的primefaces佈局可能是模板的一部分。因此,使用該模板的每個頁面(「用戶」,「工具」)實際上將與「佈局」的主面板「自動」對應地添加了左側和右側面板。

假設您在左側面板的菜單組件中有一個「用戶」子菜單。然後它會鏈接到你的「用戶」視圖(使用Ajax)。

你應該閱讀:http://www.ibm.com/developerworks/java/library/j-jsf2fu2/

0

你必須創建模板 步驟:1

<?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"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:h="http://java.sun.com/jsf/html" 
     xmlns:ui="http://java.sun.com/jsf/facelets" 
     xmlns:p="http://primefaces.org/ui" 

    <div> 
    /* define your pages here.*/ 
    /*menuPage refers the header information*/   
     <div class="menuPage"> 
      <ui:insert name="menuPage" /> 
     </div>  
    /* mainPage refers the what are your .xhtml files*/ 
     <div class="mainPage"> 
      <ui:insert name="mainPage" /> 
     </div> 
    /*footer page*/ 
     <div class="footerPage"> 
      <ui:insert name="footerPage" /> 
     </div> 

    </div> 

</html> 

第2步: 那麼對於MenuPage.xhtml,MainPage.xhtml和FooterPage.xhtml

創建分離頁

步驟:3 寫模板

<?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"> 
    <html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:h="http://java.sun.com/jsf/html" 
     xmlns:ui="http://java.sun.com/jsf/facelets" 
     xmlns:p="http://primefaces.org/ui"> 


    <ui:composition template="template.xhtml"> 

     <ui:define name="menuPage"> 
      <ui:include src="menuPage.xhtml" /> 
     </ui:define> 

     <ui:define name="mainPage"> 
      <ui:include src="mainPage.xhtml" /> 
     </ui:define> 

     <ui:define name="footerPage"> 
      <ui:include src="footerPage.xhtml" /> 
     </ui:define> 

    </ui:composition> 
</html>