JSF SelectOneMenu und der Converter

Headhunter_X

Mitglied
Hallo,

ich hab die Suche schon benutzt, nur leider hilft mir das bei meinem Problem nicht weiter.
Ich bekomme,wenn ich etwas aus dem SelectOneMenu auswähle, in dem Formular nach dem Klick auf den Button immer die Fehlermeldung:form:application: Validierungs-Fehler: Wert nicht gültig


Ich habe ein SelectOneMenu:
Code:
<h:form id="form">
     <h:selectOneMenu id="application" value="#{ApplicationController.applications}"  converter="StringConverter">
               <f:selectItems value="#{ApplicationController.applications}" />
      </h:selectOneMenu>
</h:form>

Dann den Controller:
Java:
public class ApplicationController
{
    private String test ="";
    private Application application;
    private ArrayList<SelectItem> allRoles = new ArrayList<SelectItem>();

    public ApplicationController()
    {
        allRoles.add(new SelectItem("Wählen Sie"));
        allRoles.add(new SelectItem("Option1"));
        allRoles.add(new SelectItem("Option2"));
    }

    public void setApplication(Application application)
    {
        this.application = application;
    }

    public ArrayList<SelectItem> getApplications()
    {
        return this.allRoles;
    }

    public Application getApplication()
    {
        return application;
    }
}

Nächste Klasse
Java:
public class Application
{
    private String application;

    public Application(String application)
    {
        this.application = application;
    }

    public void setApplication(String application)
    {
        this.application = application;
    }

    public String getApplication()
    {
        return this.application;
    }
}

Und mein Converter der wohl noch Probleme macht:
Java:
public class StringConverter implements Converter
{
    public StringConverter()
    {}

    public Object getAsObject(FacesContext context, UIComponent component, String value)
    {
        SelectItem item=null;
        

        try{
            item = new SelectItem(value.toString());
            System.out.println("Durchlaufen: " +item.getValue());
        }catch( UnsupportedOperationException e){ System.out.println("GetAsObject failed." +e); }

        return item;
    }

    public String getAsString(FacesContext context, UIComponent component, Object value)
    {
        String myString="";

        try{
            myString = value.toString();

        }catch( UnsupportedOperationException    e){ System.out.println("GetAsString failed." +e); }

        return myString;
    }

Ich hab gerade ein Brett vorm Kopf und wäre über Hilfe dankbar.

Gruß
 

jwiesmann

Bekanntes Mitglied
Okay .. versuchen wir es mal :)
1.
Java:
        allRoles.add(new SelectItem(-1,"Wählen Sie"));
        allRoles.add(new SelectItem(1,"Option1"));
        allRoles.add(new SelectItem(2,"Option2"));

Warum?
Damit du nachher das gewählte Element wieder über die ID ansprechen kannst.
2.
[XML]
<h:selectOneMenu id="application" value="#{ApplicationController.selectedOptionsId}">
<f:selectItems value="#{ApplicationController.allRoles}" />
</h:selectOneMenu>
[/XML]
Warum?
Erstmal müssen die selectItems natürlich auch vom Typ (JAVA) her SelectItem sein.
Was du als value angibst macht überhaupt keinen Sinn.
Der ganze code des ApplicationController scheint völlig sinnfrei zu sein. Bzw. so merkwürdig benannt, dass man nicht wirklich weiß was du damit machen willst.
Java:
public class ApplicationController
{
    private String test ="";
    private ArrayList<SelectItem> allRoles = new ArrayList<SelectItem>();
 
    public ApplicationController()
    {
        allRoles.add(new SelectItem(-1,"Wählen Sie"));
        allRoles.add(new SelectItem(1,"Option1"));
        allRoles.add(new SelectItem(2,"Option2"));
    }
 
   // getter und setter noch bauen....
   public int selectedOptionsId=-1;
  
   public ArrayList<SelectItem> getAllRoles() {
        return this.allRoles;
   }
 
   // setter noch erstellen
  public setAllRoles (ArrayList<SelectItem> allRoles) {
      this.allRolles = allRoles; 
  }
}

Was du auch immer mit dem Converter erreichen willst..... lass es lieber :D
Der Converter macht z.B. aus "1" = "Ja" oder sowas und dient lediglich der Darstellung

Gruß
 

Headhunter_X

Mitglied
Hallo,

danke schon Mal für deine Hilfe.

Jetzt merk ich erst, dass ich folgendes nicht erwähnt habe :oops:
Der Sinn des Converters war, dass ich ja das ausgewählte Element aus dem SelectOneMenu speichern und zum Test im Textfeld ausgeben möchte.

Nachtrag: Super jetzt klappts. Danke für deine Hilfe. War doch einfacher als gedacht.



Gruß
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Converter für SelectOneMenu Web Tier 3
P JSF (Primefaces) SelectOneMenu Value auf Array wird nicht gesetzt Web Tier 0
C selectOneMenu mit valueChangeListener im <p:dialog Web Tier 2
F JSF h:selectOneMenu Wert vorbelegen klappt nicht? Web Tier 2
Phash JSF - SelectOneMenu Property anzeigen Web Tier 3
F JSF p:selectOneMenu Session Web Tier 10
S JSF SelectOneMenu - Probleme mit AJAX Web Tier 6
F PrimeFaces - selectOneMenu Web Tier 2
F PrimeFaces p:selectOneMenu funktioniert nicht Web Tier 12
H JSF Textarea nur einblenden, bei bestimmter Auswahl in SelectOneMenu Web Tier 6
F JSF ValueChangeListener in editable p:SelectOneMenu Web Tier 3
NoXiD JSF h:selectOneMenu - änderungen nicht übernommen Web Tier 14
P SelectOneMenu liest Daten nicht ein Web Tier 7
J JSF 2.0 h:selectOneMenu mit enums Web Tier 4
J h:selectOneMenu und Page-Refresh Web Tier 3
M selectOneMenu Web Tier 4
I selectOneMenu - Problem Web Tier 6
M SelectoneMenu Default Wert Web Tier 4
ModellbahnerTT JSF selectOneMenu Web Tier 15
J Datenübergabe aus selectOneMenu Web Tier 2
F Unterschied h:selectOneMenu zu rich:comboBox Web Tier 4
E Wert aus JSF-Selectonemenu in Textfeld schreiben Web Tier 4
A JSF SelectOneMenu mit Werten aus Bean vorbelegen Web Tier 2
M SelectOneMenu mit Inhalt aus DB Web Tier 2
G JSF JSF 2.3 Converter injection/persistence context -> null Web Tier 2
K Converter + Zugriff auf DAO und EntityManager Web Tier 7
P JSF Converter Web Tier 3
H JSF Converter selectoneitem Web Tier 9
H JSF Problem mit Converter Web Tier 2
M JSF Converter für String to List<String> Web Tier 2
D JSF Converter erstellen Web Tier 2
T JSF Eigener Converter wird nur für Eingabekomponenten aufgerufen? Web Tier 3
A ice:inputText Converter Problem Web Tier 2
M JSF 2 Global Converter Web Tier 4
Y JSF: Entites in SelectItems und Converter Web Tier 6
S JSF Enum Converter Web Tier 1
W RichFaces converter in orderingList wirft exception Web Tier 5

Ähnliche Java Themen

Neue Themen


Oben