私は JSF と PrimeFaces にかなり慣れていないので、複数のメニューを含むフル ページ レイアウトを開発する際にいくつかの問題があります。
問題#1
次のように、PrimeFaces 3.3 を使用して、左側にネストされたレイアウト ユニットを持つフル ページ レイアウトがあります。
<p:layoutUnit id="west" position="west" header="Services" resizable="true" closable="true" collapsible="true" effect="drop">
<p:layout>
<p:layoutUnit id="inner_center" position="center">
<h:form id="formMainMenu">
<ui:include src="#{menuBean.pageToDisplay}.xhtml" />
</h:form>
</p:layoutUnit>
<p:layoutUnit id="inner_south" size="200" position="south">
<h:form id="formStartMenu">
<p:menu>
<p:submenu label="Start Menu">
<p:menuitem value="Start" actionListener="#{#menuBean.setPageToDisplay('template/menu/start')}" update=":inner_center" />
</p:submenu>
</p:menu>
</h:form>
</p:layoutUnit>
</p:layout>
</p:layoutUnit>
バッキング Bean は次のとおりです。
@ManagedBean(name = "menuBean")
@SessionScoped
public class menuBean implements Serializable {
private String pageToDisplay = "template/menu/main";
public String getPageToDisplay() {
return this.pageToDisplay;
}
public void setPageToDisplay(String pageToDisplay) {
this.pageToDisplay = pageToDisplay;
} }
menuItem をクリックすると、LayoutUnit (inner_center) 全体が消えます。Forms コントロールと Panel コントロールを Ajax と組み合わせて多数試しましたが、2 番目のページとメニューをロードできません。JSF に関する知識が限られているため、私のアプローチが間違っている可能性があります。私はこれが単純なものであることを望んでおり、それが欠けているだけです。
menuItem アクションから、別の PrimeFaces メニュー Bean を inner_center レイアウト ユニットにロードしたいのですが、これを行う必要はなく、Ajax 経由でメニューを呼び出すだけでよいでしょうか?
問題 2 これらの入れ子になったレイアウト ユニットでは、ページが読み込まれると、親の LayoutUnit ヘッダー「サービス」が完全に消えます。
<p:layoutUnit id="west" position="west" header="Services" resizable="true" closable="true" collapsible="true" effect="drop">
全体的なアプローチに関するヘルプやアドバイスは大歓迎です!!
ありがとう!