3
を使用して動的メニューを作成します。JSF - 私は何をしたいのですが説明するのは簡単ですAJAX&selectOneListbox
bean
@ManagedBean
@ViewScoped
public class Articles {
private String selectedMenu;
@PostConstruct
public void init() {
if(selectedMenu==null || selectedMenu.trim().isEmpty()) {
this.selectedMenu="0";
}
}
public String getSelectedMenu() { return selectedMenu; }
public void setSelectedMenu(String selectedMenu) { this.selectedMenu = selectedMenu; }
}
page
<h:selectOneListbox onchange="..?? ajax call that render on loadMenu and pass the value of the focused listbox to Articles Bean" id="category" size="0" >
<f:selectItem itemLabel="first" itemValue="0" />
<f:selectItem itemLabel="second" itemValue="1" />
<f:selectItem itemLabel="third" itemValue="2" />
</h:selectOneListbox>
<h:panelGroup layout="block" id="loadMenu">
<h:panelGroup rendered="#{articles.selectedMenu=='0'}">
MENU 0
</h:panelGroup>
<h:panelGroup rendered="#{articles.selectedMenu=='1'}">
MENU 1
</h:panelGroup>
<h:panelGroup rendered="#{articles.selectedMenu=='2'}">
MENU 2
</h:panelGroup>
</h:panelGroup>
を私が変更した場合リストボックスの値は、(サーバー上の関数を呼び出すことによって)メニューが動的に変化するはずです。上記のコードは、私が探しているものを表現していると思います。
onchangeオプションを使用して呼び出す方法を知っておく必要があります。出来ますか?
乾杯
UPDATE
<h:panelGroup layout="block">
<h:selectOneListbox styleClass="article_combo" size="0" id="selectedMenu" >
<f:selectItem itemLabel="first" itemValue="0" />
<f:selectItem itemLabel="second" itemValue="1" />
<f:selectItem itemLabel="third" itemValue="2" />
<f:ajax event="change" execute="@this" render="loadMenu" />
</h:selectOneListbox>
</h:panelGroup>
<h:panelGroup layout="block" id="loadMenu">
<h:panelGroup rendered="#{articles.selectedMenu=='0'}">
MENU 0
</h:panelGroup>
<h:panelGroup rendered="#{articles.selectedMenu=='1'}">
MENU 1
</h:panelGroup>
<h:panelGroup rendered="#{articles.selectedMenu=='2'}">
MENU 2
</h:panelGroup>
</h:panelGroup>
はい、これがすべき作品を。しかし、私は集中要素を変更するときにこれを行う必要があります。 "do on onchange"のように:) – markzzz
'event =" change "'を追加します。しかし、すでに 'h:selectOneMenu'のデフォルトイベントです。とにかく試しましたか?ブライアンによって提案されたように、ちょうどこのラインは十分であるはずです。 – BalusC
BalusCが指摘するように、ajaxイベントが発生するイベント属性を指定できます。イベントはDOMイベントです。リストボックスのデフォルトのイベントは「変更」です。詳細は、JSF2 APIを参照してください。http://download.oracle.com/docs/cd/E17802_01/j2ee/javaee/javaserverfaces/2.0/docs/pdldocs/facelets/f/ajax.html –