jsffページにはcssとスタイル情報が含まれていないため、インラインフレーム内に正しく表示されません。代わりに、インラインフレーム内に完全なjsfページを表示できます。これで、動的jsfページを内に表示できます。 jsfページからcommandMenuItemをクリックしたときのインラインフレーム...手順は以下のとおりです。
- 最初にjsfページを作成します(welcome.jsfとしましょう)..commanMenuItemを追加します...
- コンテンツを含む他の2つのjsfページを作成します。
- 最初のjsfページ(welcome.jsf)で、作成された2つの異なるページと同じcommandMenuItemのIDを記述します。commandMenuItem 1 id="first"およびcommandMenuItem2id= "second"であり、他の2つの異なるページの名前はfirstおよびsecondと同じである必要があります。
ここで、commandMenuItemにアクションリスナーBeanを作成します
インポートjavax.faces.event.ActionEvent;
パブリッククラスPageBean{
String page = "home";//setting default page
public PageBean() {
}
public void getMenu(ActionEvent actionEvent) {
// Add event code here...
String id = actionEvent.getComponent().getId();
System.out.println(" Menu ID : "+id);
page = id;
System.out.println("Value assigned to the page from the menu Id is :"+page);
}
public String getPage() {
return page;
}
public void setPage(String page) {
this.page = page;
}
}
今度はsecondCommandMeuItemにも同じactionListnerBeanを登録します
メニューを含むメインページのコード...
<af:panelGroupLayout id="pgl1">
<af:menuBar id="mb1">
<af:menu text="menu 1" id="m1">
<af:commandMenuItem text="commandMenuItem 1" id="page1" actionListener="#{PageBean.getMenu}">
<a4j:support event="onclick" reRender="if1"/>
</af:commandMenuItem>
</af:menu>
<af:menu text="menu 2" id="m2">
<af:commandMenuItem text="commandMenuItem 2" id="page2" actionListener="#{PageBean.getMenu}">
<a4j:support event="onclick" reRender="if1"/>
</af:commandMenuItem>
</af:menu>
</af:menuBar>
<af:inlineFrame id="if1" source="#{PageBean.page}.jsf" shortDesc="areaMp" partialTriggers="page1 page2"/><!-- getting dynamic page source from the managed bean variable(page) by fetching the menu id which is similar to the corresponding page name
also add the commandMenuId of the menu's in the partial trigger of the inline frame. -->
</af:panelGroupLayout>
インラインフレーム内にjsfページを含めて表示でき、jsfページだけでなくjsff(ページフラグメント)でもインラインフレームを使用できます。