2016-05-23 19 views
0

Ich verwende diese h:selectOneMenu, um den Wert in die Datenbank zu setzen.Anzeige String in Zahlenwert

<h:selectOneMenu id="role" value="#{profile.accountData.role}"> 
    <f:selectItem itemLabel="User" itemValue="0" /> 
    <f:selectItem itemLabel="Developer" itemValue="1" /> 
    <f:selectItem itemLabel="Sales" itemValue="2" /> 
    <f:selectItem itemLabel="Administrator" itemValue="3" /> 
    <f:selectItem itemLabel="Super user" itemValue="4" /> 
</h:selectOneMenu> 

Wie ich String in h:outputText basierend auf int-Wert angezeigt werden kann, die ich h:selectOneMenu Satz verwendet?

h: output

Antwort

1

Eine Möglichkeit, es zu tun sein wird, einige Methoden in Ihrem Backend-Bohnen hinzufügen:

  • Erstellen Sie eine Methode, die eine Map<Integer, String> mit den Werten zurück in die selectOneMenu
  • anzuzeigen
  • Initialisieren Sie die selectItem Werte mit einer Methode, die einen List<SelectItem> aus dem vorherigen Map
  • zurückgibt. Erstellen Sie eine Methode, die a zurückgibt String einen Elementnamen von einem Element-Wert (Integer) durch Abrufen in der Karte

Methode zum Abrufen der Karte

public Map<Integer, String> getMapOfItem() { 
    Map<Integer, String> mapOfItem = new HashMap<>(); 

    // Initialize items 
    mapOfItem.put(0, "User"); 
    mapOfItem.put(1, "Developer"); 
    mapOfItem.put(2, "Sales"); 
    mapOfItem.put(3, "Administrator"); 
    mapOfItem.put(4, "Super user"); 

    return mapOfItem; 
} 

Methode zur Initialisierung der selectItem Werte

public List<SelectItem> getLstOfItem() { 
    List<SelectItem> lstOfItem = new ArrayList<>(); 
    for (Map.Entry<Integer, String> entry : getMapOfItem().entrySet()) { 
     lstOfItem.add(new SelectItem(entry.getKey(), entry.getValue())); 
    } 
    return lstOfItem; 
} 

Verfahren zum Initialisieren um einen int Wert in das entsprechende Etikett zu konvertieren

In Ihrer JSF-Ansicht, es einfach so nennen (bean ist Ihre Back-End-Bohne)

<h:selectOneMenu id="role" value="#{profile.accountData.role}"> 
    <f:selectItems value="#{bean.lstOfItem}"/> 
</h:selectOneMenu> 

und für die h:outputText

<h:outputText value="#{bean.itemName(profile.accountData.role)}"/> 

es Ihnen Hoffnung kann

+0

Sehr gute Antwort helfen . Vielen Dank! –