1

いくつかのselectItemを含むselectOneRadioメニューがあります。プロパティファイルに基づいて選択肢を表示したいと思います。たとえば、店舗にクレジットカードリーダーがない場合、クレジットオプションは表示されません。表示されるものと表示されないものを指定するconfig/propertiesファイルが必要です。

それを達成する方法はありますか?プロパティファイルをバッキングBeanに読み込んでから、「rendered」属性のようなものを用意する必要があると思います。ただし、試したところ、selectItemで「rendered」が機能しないようです。

<h:selectOneRadio id="selectedPaymentMethod" layout="pageDirection" 
        value="#{selectPaymentMethodAction.selectedPaymentMethod}">

    <f:selectItem itemValue="online" itemLabel="#{paymentMsg['payment.online.lbl']}"/>
    <f:selectItem itemValue="cash" itemLabel="#{paymentMsg['payment.cash.lbl']}"/>
    <f:selectItem itemValue="credit" itemLabel="#{paymentMsg['payment.credit.lbl']}"/>
    <f:selectItem itemValue="debit" itemLabel="#{paymentMsg['payment.debit.lbl']}"/>

</h:selectOneRadio>
4

1 に答える 1

2

バンドルファイルに基づいて<f:selectItems>フィードするものを使用します。List<SelectItem>このようにして、通常のJavaコードを使用して、アイテムを追加するかどうかを制御できます。

例えば

<f:selectItems value="#{selectPaymentMethodAction.paymentMethods}" />

private List<SelectItem> paymentMethods; // +getter

public Bean() {
    paymentMethods = new ArrayList<SelectItem>();
    ResourceBundle bundle = ResourceBundle.getBundle("com.example.Messages", FacesContext.getCurrentInstance().getViewRoot().getLocale());

    if (condition) {
        paymentMethods.add(new SelectItem("online", bundle.getString("payment.online.lbl")));
    }

    // ...
}
于 2011-03-16T23:00:05.737 に答える