2013-03-14 97 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