Визуализация SelectItem на основе файла свойств - PullRequest
1 голос
/ 17 марта 2011

У меня есть меню selectOneRadio с некоторыми элементами selectItem.Я хочу показать варианты, основанные на файле свойств.Например, если в магазине нет устройства для считывания кредитных карт, я бы не показывал вариант с кредитом.Должен быть файл config / properties, указывающий, что показано, а что нет.

Есть ли способ сделать это?Я предполагаю, что мне нужно прочитать файл свойств в базовый компонент, а затем получить что-то вроде атрибута «рендеринг».Тем не менее, я только что попробовал, и «рендеринг», похоже, не работает для selectItem.

<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>

1 Ответ

2 голосов
/ 17 марта 2011

Используйте <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")));
    }

    // ...
}
...