2013-03-14 120 views
0

我想在JSF2.0中單擊我的菜單鏈接時將頁面加載到中央div。我設置了一個面板菜單並寫了一個這樣的菜單項。JSF2由ajax動態加載頁面

<p:menuitem > 
<h:commandButton value="Edit Details" action="#{formsBean.changeDisplay(1)}"> 
<f:ajax render=":editdiv"></f:ajax> 
</h:commandButton> 
</p:menuitem> 

的部件將被更新爲:

<h:panelGroup id="editdiv" rendered="#{formsBean.edituserdiv}" layout="block"> 
    <ui:include src="edituserdetails.xhtml"> 

</ui:include> 
</h:panelGroup> 

功能formsBean.changeDisplay(1)edituserdiv爲true以顯示相應的面板組。

在包含的頁面中,我定義了一個表單。

另外,在主頁面中,我調用預渲染函數將所有div設置爲false,以在首次加載頁面時不顯示div。

問題是,當我點擊菜單項時,包含的頁面沒有被包括在內。任何指針?

回答

2

問題是因爲最初您的h:panelGroup未呈現,因此AJAX請求無法在生成的代碼中找到它,因此無法更新它。封裝它在另一個h:panelGroup,並使其:

<h:panelGroup id="editdivParent" layout="block"> 
    <h:panelGroup id="editdiv" rendered="#{formsBean.edituserdiv}" layout="block"> 
    <ui:include src="edituserdetails.xhtml"> 

    </ui:include> 
    </h:panelGroup> 
</h:panelGroup> 

,改變你的f:ajax到:

<f:ajax render=":editdivParent"/> 
+0

謝謝..它的工作。我不得不包括4頁。所以我把所有面板組放在一個封閉的面板組中,並使用ajax渲染封閉的面板組。渲染單個面板組會導致已經顯示的面板組在顯示新面板時不會隱藏。非常感謝.. – 2013-03-14 17:34:23

+0

不客氣。 – partlov 2013-03-14 17:46:03