0

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

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

问题是当我单击菜单项时,不包含包含的页面。任何指针?

4

1 回答 1

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"/>
于 2013-03-14T15:04:23.880 回答