Nachdem ich jetzt Customer eintragen kann, habe ich mich mal aufgemacht, die eingetragen Werte zu validieren und converter für DropDownMenüs (h:selectOneMenu) Objekte zu schreiben. Die liegen nämlich als Stringrepräsentation vor, wenn das Formular abgeschickt wird und müssen durch die ID dann in den richtigen Typen konvertiert werden.
Frage: Dies bedeutet doch, dass nicht einfach die ID im dafür vorgesehenen Fremdschlüssel eingetragen wird, sondern erst nochmal das Objekt mit der angegebenen ID aus der Datenbank geholt wird, um dann... uhm.. _nichts_ damit zu machen - na gut, außer festzustellen, dass es tatsächlich existiert, aber ist das nicht eigentlich ne Datenbankaufgabe? Irgendwie ist das nicht gerade gut, oder sehe/mache ich hier etwas falsch?
Außerdem: Leere Textfelder werden bei JSF nicht validiert! Mit der Begründung, dass es ja keinen Inhalt gibt, den man validieren kann. D.h. wenn man einen Validator nimmt und prüft, ob der String zwischen 2 und 25 Zeichen hat, dann gibt es keinen Validierungsfehler, wenn man 0 Zeichen eingibt...
Ich dachte schon, ich müsste nun explizit einen Validator schreiben, um zu prüfen ob der String überhaupt Zeichen enthält, aber zum Glück gibt es hier das Attribut "required" für Formularfelder.
Verwandtes Thema: Ist eine Angabe freiwillig und der Benutzer schickt ein leeres Textfeld ab, wird nicht null, sondern ein leerer String "" in die Datenbank gespeichert. Um dies zu beheben, musste ich tatsächlich einen StringConverter schreiben.
Dies ist aber - wie auch eigene Validator schreiben - ziemlich simpel! Hier konnte JSF zum ersten Mal von mir richtig Pluspunkte sammeln. ;)