我有一个selectOneRadio菜单,里面有一些selectItem。我想根据属性文件显示选择。例如,如果商店没有信用卡读卡器,那么我就不会显示信用卡选项。应该有一个配置/属性文件,指定显示的内容和不显示的内容。
有没有办法实现这一目标?我假设我需要将属性文件读入支持bean,然后使用“呈现”属性。但是,我只是尝试过'渲染'似乎不适用于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>
答案 0 :(得分:2)
根据捆绑文件使用<f:selectItems>
提供的List<SelectItem>
。这样,无论是否应添加项目,您都可以使用常用的Java代码进行控制。
E.g。
<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")));
}
// ...
}