2011-03-16 3 views
1

J'ai un menu selectOneRadio avec des éléments de sélection. Je veux montrer les choix basés sur un fichier de propriétés. Par exemple, si un magasin n'a pas de lecteur de carte de crédit, je ne montrerais pas l'option de crédit. Il devrait y avoir un fichier config/properties spécifiant ce qui est montré et ce qui ne l'est pas.Render SelectItem basé sur le fichier de propriétés

Existe-t-il un moyen d'accomplir cela? Je suppose que j'ai besoin de lire le fichier de propriétés dans le bean backing, puis avoir quelque chose comme un attribut «rendu». Cependant, j'ai juste essayé et 'rendu' ne semble pas fonctionner pour 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> 

Répondre

2

Utilisez <f:selectItems> que vous nourrissez avec un List<SelectItem> basé sur le fichier de paquet. De cette façon, vous pouvez contrôler en utilisant le code Java habituel si l'élément doit être ajouté ou non.

E.g.

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

avec

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"))); 
    } 

    // ... 
} 
Questions connexes