JSF2通过ajax动态加载页面

时间:2013-03-14 14:58:18

标签: jsf-2 primefaces

当我点击JSF2.0中的菜单链接时,我想将页面加载到中央div中。我设置了一个panelmenu并编写了一个这样的菜单项。

<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。

问题是,当我点击菜单项时,不包含所包含的页面。有什么指针吗?

1 个答案:

答案 0 :(得分: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"/>