0

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>

関数は true にformsBean.changeDisplay(1)設定edituserdivされ、対応するパネル グループが表示されます。

含まれているページには、フォームが定義されています。

また、メイン ページでは、最初のページの読み込み時に div を表示しないように、すべての div を false に設定する pre-render 関数を呼び出します。

問題は、メニュー項目をクリックすると、含まれているページが含まれていないことです。ポインタはありますか?

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 に答える