1

選択したアイテムに基づいてメニューの外観を変更したい。

マネージドBeanを使用してselectonelistboxの値を取得する方法は?

ビーンソース:

    public void selectOneMenuListener(ValueChangeEvent event) {
    Object newValue = (String) event.getNewValue(); 
    selectedMenu = newValue.toString();
}

public String getSelectedMenu() {
    return selectedMenu;
}

public void setSelectedMenu(String selectedMenu) {
    this.selectedMenu = selectedMenu;
}

ページ:

    <h:panelGroup id="panel">
    <h:selectOneListbox id="katProduktu" valueChangeListener="#{produkt_KatBean.selectOneMenuListener}">
        <f:selectItems value="#{produkt_KatBean.produkt_KatAllList}"
            var="pk" itemLabel="#{pk.symbol}" itemValue="#{pk.id}"/>
        <f:ajax render="produktMenu" event="change" execute="@this" />
    </h:selectOneListbox>
</h:panelGroup>

<h:panelGroup layout="block" id="produktMenu">
    <h:panelGroup rendered="#{produkt_KatBean.selectedMenu==1}">
        Menu 1
    </h:panelGroup>
    <h:panelGroup rendered="#{produkt_KatBean.selectedMenu==2}">
        Menu 2
    </h:panelGroup>
    <h:panelGroup rendered="#{produkt_KatBean.selectedMenu==3}">
        Menu 3
    </h:panelGroup>     
    <h:panelGroup rendered="#{produkt_KatBean.selectedMenu==4}">
        Manu 4
    </h:panelGroup>
</h:panelGroup>

ありがとう!

4

1 に答える 1

0

使用しないでくださいvalueChangeListener。それは仕事にとって間違ったツールです。プロパティをvalueメニューコンポーネントの属性にバインドし、rendered属性にインターセプトさせます。このように、リスナーはまったく必要ありません。また、rendered文字列の比較は機能しません。== '1'などの代わりに使用する必要があります== 1が、これは明らかに不器用です。作成してくださいLong(またはInteger)。

<h:panelGroup id="panel">
    <h:selectOneListbox id="katProduktu" value="#{produkt_KatBean.selectedMenu}">
        <f:selectItems value="#{produkt_KatBean.produkt_KatAllList}"
            var="pk" itemLabel="#{pk.symbol}" itemValue="#{pk.id}"/>
        <f:ajax render="produktMenu" />
    </h:selectOneListbox>
</h:panelGroup>

<h:panelGroup layout="block" id="produktMenu">
    <h:panelGroup rendered="#{produkt_KatBean.selectedMenu==1}">
        Menu 1
    </h:panelGroup>
    <h:panelGroup rendered="#{produkt_KatBean.selectedMenu==2}">
        Menu 2
    </h:panelGroup>
    <h:panelGroup rendered="#{produkt_KatBean.selectedMenu==3}">
        Menu 3
    </h:panelGroup>     
    <h:panelGroup rendered="#{produkt_KatBean.selectedMenu==4}">
        Manu 4
    </h:panelGroup>
</h:panelGroup>

ただで

private Long selectedMenu; // Or Integer? Should be the same type as #{pk.id}.

// +getter +setter

event(とのexecute属性は<f:ajax>すでにデフォルト値を表しているため、省略していることに注意してください)

于 2013-01-10T14:38:26.630 に答える