JSF <rich:select, "Überprüfungsfehler: Wert ist ungültig"

DanielS

Mitglied
Guten Tag,

ich benutze ein <rich:select> Dropdown, der Zielwert ist vom Typ Long (Die Klasse, nicht long). Wenn ich nun das Formular absende, ohne einen Wert ausgewählt zu haben, bekomme ich den Fehler "Überprüfungsfehler: Wert ist ungültig". Falls nichts ausgewählt ist, sollte der Longvalue doch einfach null sein, oder?
Wie kann ich hier vorgehen?

Viele Grüße
Daniel
 

jwiesmann

Bekanntes Mitglied
Guck mal nach ob bei deiner zugehörigen Entity vielleicht sowas wie:

Java:
@Column(name = "COLUMN_NAME", nullable=false)
oder sowas in der Art steht (wie zb. required o.ä)

Gruß
 

DanielS

Mitglied
Hallo jwiesmann,

der Fehler kommt schon, bevor auf die Entity zugegriffen wird, der Long value ist in der SessionScoped Bean.

Viele Grüße
Daniel
 

jwiesmann

Bekanntes Mitglied
Ich hatte mal sowas ähnliches, da dachte Richfaces aufgrund der Entity (auch ohne Zugriff auf die Datenbank), dass der Wert gesetzt werden muss.

Was jedoch auch noch sein kann, ist dass du den Wert einmalig initialisieren musst.
like:
Java:
@PostConstruct
void init() {
    myLong = new Long();
}


Ansonsten wird evtl. versuch via Getter auf die Variable zuzugreifen, was natürlich nicht klappen kann, wenn diese NULL ist.
 

DanielS

Mitglied
Danke für die Antwort. Der Punkt mit der Entitie kann nicht sein, da der Wert noch garkeine Verbindung zu einer Entity hat. Long hat leider keinen leeren Standardkonstruktor, und Long x = null hat leider auch keine Änderung gebracht :( Noch eine Idee?
 

Fant

Bekanntes Mitglied
Möglicherweise versuchst du einen leeren String in dein Long-Feld zu schreiben. Arbeitest du hier mit einem passenden Converter?
 

DanielS

Mitglied
Hallo Fant,

Danke für deine Antwort. In einem anderen Fall (mit einer selectManyCheckbox) hatte ich auch das Problem, dass die Long Werte von alleine nicht als Long werte übergeben werde. Ich vermute, dass ich wohl überall einen String nehmen muss. Werde das damit testen und dann nochmal hier mitteilen.

Viele Grüße
Daniel
 

Fant

Bekanntes Mitglied
Wegen Problemen in der Darstellungsebene würde ich nicht nachträglich am Model rumfrickeln. Das zieht ja eventuell einen riesiges Rattenschwanz nach sich. Hast du es denn mal mit einem Converter probiert?
 

DanielS

Mitglied
Hallo Fant,

das betrifft nur die Backing Bean, genauer gesagt die Variable, die den Wert der selectBox aufnimmt. Im Datenmodell ändert sich nichts, die ID bleibt dort vom typ long!

Viele Grüße
Daniel
 

JimPanse

Bekanntes Mitglied
Hi,

ich bin ein wenig verwirrt. Ist die Id nun vom Type long (primitiv) oder Long (Wrapper Klasse). Der primitve Datentyp kann nicht mit null gesetzt werden d.h. schätze ich mal kommt die Fehlermeldung.

Ansonsten kann man über den context-parameter "javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL" für primitive + wrapper Klassen einstellen das immer default Werte genommen werden bei null-Strings.


Grüße
 

DanielS

Mitglied
Also, die Konstellation ist folgende:

Ich habe eine Entity für die Dropdownwerte mit den Eigenschaften:
long id, String name

Nun habe ich eine select Komponente, die alle Dropdownwerte anzeigt. Anzeigt wird der name, übergeben wird die id.

Nun habe ich in der BackingBean eine Variable Long selectedValue. Das hat aber so nicht funktioniert. Ich habe jetzt einfach die Variable zu String selectedValue gemacht und konvertiere diese dann bei Benutzung in ein long. So funktioniert alels :)
 

Ähnliche Java Themen

Neue Themen


Oben