2016-06-12 9 views
-1

Auf der Registrierungsseite möchte ich, dass die Benutzer nur eine Rolle auswählen können. Deshalb verwende ich <h:selectOneMenuWie konvertiert man h: selectOneMenu Element in eine Liste <String> mit benutzerdefinierten JSF-Konverter?

<h:selectOneMenu id="roles" value="#{register.user.roles}" required="true"> 
    <f:selectItem itemValue="EMPLOYEE" itemLabel="EMPLOYEE" /> 
    <f:selectItem itemValue="MANAGER" itemLabel="MANAGER" /> 
    </h:selectOneMenu> 

<h:selectOneMenu kehrt String Objekt. Um es jedoch in der Datenbank zu erhalten, muss ich List<String> bekommen. Hier Wandler ich

@FacesConverter(value="aConverter") 
public class AConverter implements Converter { 

    @Override 
    public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) 
      throws ConverterException { 
     List<String> result = null; 
     result.add(arg1.toString()); 
     return result; 
    } 

    @Override 
    public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) 
      throws ConverterException { 
     return arg1.toString(); 
    } 

Wie soll ich <h:selectOneMenu return String zu einem List konvertieren? ich NullPointerException

+0

1: benutze arg2, was der Wert ist, nicht arg1, was die Auswahlkomponente ist. 2: 'Liste result = null;' ist die Ursache der Nullzeigerausnahme. versuche etwas wie 'new ArrayList ()' anstelle von null. –

+0

was meinst du mit allen Kombinationen? Wenn Sie eine Liste als null initialisieren und dann in der nächsten Zeile hinzufügen, erhalten Sie offensichtlich eine Nullzeigerausnahme. –

Antwort

1

<h:selectOneMenu id="roles" value="#{register.user.roles}" required="true">
hier Sie den Wert in einer Zeichenfolge zu speichern. Erstellen Sie stattdessen in Ihrer managedBean eine Variable als ArrayList und verwenden Sie diese in Ihrer JSP-Seite, um den Wert von selectOneMenu zu speichern. Ich denke, es sollte funktionieren und Sie brauchen keinen Konverter.

Verwandte Themen