Form Validation — was es ist, Formularvalidierung und Implementierung in Android

Autor: IT Sectr Veröffentlicht: 2026-07-09 Lesezeit: 5 Min.

Form Validation ist der Prozess der Überprüfung aller Formularfelder auf Korrektheit, bevor Daten an den Server gesendet werden. Im Gegensatz zur Validierung eines einzelnen Feldes berücksichtigt Form Validation die Beziehungen zwischen Feldern: Passwortbestätigung, Abhängigkeit eines Feldes von einem anderen, bedingte Pflichtfelder. Laut Google Developers, 2026 sollte Form Validation das gesamte Formular beim Absenden überprüfen und dem Benutzer eine Zusammenfassung aller Fehler bereitstellen. Eine korrekte Formularvalidierung erhöht die Registrierungskonversion um 25-35% und reduziert die Anzahl der Eingabefehler.

Wichtige Punkte

  • Form Validation ist eine umfassende Überprüfung aller Felder und ihrer Beziehungen vor dem Absenden der Daten.
  • Feldvalidierung prüft ein Feld unabhängig, während Formularvalidierung alle Felder zusammen prüft.
  • Sendeschaltflächenverwaltung — die Schaltfläche sollte deaktiviert sein, solange mindestens ein Feld ungültig ist.
  • Validierungsbibliotheken wie Saripaar und RxBinding vereinfachen die Prüfung von Formularen mit Dutzenden von Feldern.
  • Validierung beim Absenden ist ein obligatorischer Schritt, auch wenn Felder in Echtzeit validiert werden.

Was ist Formularvalidierung in Android?

Form Validation ist ein Prozess, der sicherstellt, dass alle vom Benutzer in ein Formular eingegebenen Daten den Geschäftsanforderungen entsprechen, bevor sie an den Server gesendet werden. Die Formularvalidierung umfasst die Überprüfung jedes Feldes einzeln sowie Querprüfungen: ob das Passwort mit der Bestätigung übereinstimmt, ob mindestens ein Kontrollkästchen ausgewählt ist, ob alle Pflichtfelder ausgefüllt sind, ob das Datum korrekt ist (z.B. Geburtsdatum nicht in der Zukunft).

Der Unterschied zur einfachen Feldvalidierung besteht darin, dass Form Validation das Formular als eine Einheit betrachtet. Sie kann das Absenden blockieren, wenn ein bedingtes Feld nicht ausgefüllt ist, oder eine Zusammenfassung der Fehler in einem Dialogfenster anzeigen. Bei komplexen Formularen (Registrierung, Bestellabschluss, Fragebögen) ist die Formularvalidierung eine separate Logikebene, die unabhängig von der Benutzeroberfläche getestet wird.

Laut UX-Forschung der NN Group schließen Benutzer ein Formular dreimal häufiger ab, wenn sie Fehler sofort nach dem Absenden sehen, anstatt nach jedem einzelnen Feld. Das beste Ergebnis ergibt sich jedoch aus einer Kombination: sofortige Validierung einfacher Felder (Länge, Format) + vollständige Prüfung beim Absenden für Querfelder und Geschäftslogik.

Unterschiede zwischen Feldvalidierung und Formularvalidierung

Die Feldvalidierung beantwortet die Frage: Ist die Eingabe in diesem bestimmten Feld korrekt? Die E-Mail hat das Format user@domain.com, das Telefon besteht aus Ziffern, das Passwort ist länger als 6 Zeichen. Die Feldvalidierung ist isoliert — sie hängt nicht von anderen Feldern ab und kann in Echtzeit durchgeführt werden. Ergebnis: ein Fehler für ein bestimmtes Feld oder kein Fehler.

Die Formularvalidierung beantwortet die Frage: Kann das Formular als Ganzes abgesendet werden? Sie berücksichtigt nicht nur jedes Feld, sondern auch deren Kombinationen: Passwort und Bestätigung müssen übereinstimmen, das Startdatum kann nicht später als das Enddatum sein, die Summe der Felder muss 100% ergeben. Die Formularvalidierung wird beim Absenden durchgeführt und gibt ein Gesamtergebnis zurück: das Formular ist gültig oder nicht.

Architektonisch wird die Feldvalidierung in der UI-Ebene (Fragment, ViewModel) platziert, während die Formularvalidierung in der Domänenebene (Use Case, Interactor) platziert wird. Dies ermöglicht die Wiederverwendung der Formularvalidierung in verschiedenen UI-Komponenten und das Testen ohne Emulator. In Clean Architecture ist die Formularvalidierung eine Geschäftsregel, keine UI-Logik.

KriteriumFeldvalidierungFormularvalidierung
PrüfobjektEin FeldAlle Felder + deren Beziehungen
AusführungszeitpunktEchtzeit / bei FokusverlustBeim Absenden des Formulars
ErgebnisFehler eines bestimmten FeldesGesamtstatus des Formulars + Fehlerliste
ArchitekturebeneUI-EbeneDomänenebene

Ansätze zur Formularvalidierung

Es gibt zwei Hauptansätze für Form Validation. Der erste ist imperativ: Der Entwickler schreibt eine Funktion, die nacheinander jedes Feld überprüft und eine Liste von Fehlern sammelt. Dieser Ansatz ist einfach zu verstehen, aber der Code wächst mit jedem neuen Feld. Für ein Formular mit 5 Feldern ist der imperative Ansatz noch bequem, für 15 Felder ist er bereits problematisch.

Der zweite Ansatz ist deklarativ: Validierungsregeln werden durch Annotationen oder Konfiguration beschrieben. Die Bibliothek selbst durchläuft alle Felder, wendet die Regeln an und gibt das Ergebnis zurück. Beispiel: die @Email-Annotation auf dem Feld emailData, @ConfirmPassword auf dem Bestätigungsfeld. Der deklarative Ansatz reduziert den Validierungscode um das 3- bis 5-fache und macht ihn lesbar.

Der dritte Ansatz ist reaktiv unter Verwendung von RxJava oder Kotlin Flow. Jedes Feld wird als Observable oder StateFlow dargestellt. Die Formularvalidierung abonniert Änderungen in allen Feldern und berechnet den Gesamtzustand bei jeder Änderung neu. Die Sendeschaltfläche wird automatisch aktiv, wenn alle Felder gültig sind. Dieser Ansatz erfordert Verständnis der reaktiven Programmierung, bietet aber das nahtloseste Benutzererlebnis.

Beispiel für die Validierung eines Registrierungsformulars

Betrachten wir ein Registrierungsformular mit drei Feldern: E-Mail, Passwort und Passwortbestätigung. Die Formularvalidierung umfasst: Überprüfung der E-Mail über Patterns.EMAIL_ADDRESS, Überprüfung des Passworts auf eine Mindestlänge von 8 Zeichen und das Vorhandensein mindestens einer Ziffer, Überprüfung der Übereinstimmung von Passwort und Bestätigung. Erst wenn alle drei Prüfungen bestanden sind, kann das Formular abgesendet werden.

kotlin
data class RegistrationForm(
    val email: String,
    val password: String,
    val confirmPassword: String
)

fun validateRegistration(form: RegistrationForm): ValidationResult {
    if (!Patterns.EMAIL_ADDRESS.matcher(form.email).matches())
        return ValidationResult(false, "Invalid email address")
    if (form.password.length < 8)
        return ValidationResult(false, "Password too short")
    if (form.password != form.confirmPassword)
        return ValidationResult(false, "Passwords do not match")
    return ValidationResult(true)
}

Im Beispiel nimmt validateRegistration eine Datenklasse des Formulars entgegen und gibt ein ValidationResult zurück. Wenn mindestens eine Prüfung fehlschlägt, wird false mit einer entsprechenden Nachricht zurückgegeben. Die Verwaltung der Sendeschaltfläche basiert auf dem Result: wenn isValid = true ist, ist die Schaltfläche aktiv. Zur Aktualisierung des Zustands in Echtzeit kann LiveData verwendet und die Schaltfläche bei jeder Änderung eines Feldes aktualisiert werden.

Der reaktive Ansatz mit Kotlin Flow ermöglicht die automatische Neuberechnung des Formularzustands. Jedes Feld wird als MutableStateFlow dargestellt, und combine fasst sie zu einem einzigen Flow zusammen. Ein Abonnement in der UI aktualisiert die Sendeschaltfläche ohne manuellen Aufruf der Validierung. Dieses Muster wird von Google für Jetpack Compose und MVVM-Architektur empfohlen.

Bibliotheken zur Formularvalidierung

Android Saripaar ist die beliebteste Validierungsbibliothek für Android. Sie ermöglicht es, Felder und Views direkt zu annotieren: @Email, @NotEmpty, @Password(min = 8, scheme = Password.Scheme.ALPHA_NUMERIC). Die Validierung wird mit einer einzigen Zeile validator.validate() mit einem Callback ausgelöst. Saripaar setzt den Fehler automatisch über setError auf dem EditText. Die Bibliothek unterstützt auch benutzerdefinierte Annotationen für spezifische Geschäftsregeln.

RxBinding + RxJava ist ein reaktiver Ansatz ohne separate Validierungsbibliothek. Jedes Feld veröffentlicht Änderungen über RxTextView.textChanges(). Der combineLatest-Operator fasst alle Felder zusammen und berechnet den Gesamtstatus. Vorteil: vollständige Kontrolle über die Validierungspipeline, Möglichkeit zum Hinzufügen von debounce, throttle, filter. Nachteil: Kenntnisse in RxJava erforderlich.

Material Design Components bieten integrierte Unterstützung für TextInputLayout und TextInputEditText. Die Bibliothek bietet keine Validierung als solche, sondern eine Benutzeroberfläche zur Anzeige von Fehlern: setError(), setHelperText(), setCounterEnabled(). Für die Validierung selbst ist weiterhin manuelle Logik oder Saripaar erforderlich. Material Components sind für die Anzeige zuständig, nicht für die Prüfung.

Typische Fehler bei der Formularvalidierung

Der erste Fehler ist die reine Client-Validierung. Form Validation auf dem Client ist für die Benutzererfahrung gedacht, nicht für die Sicherheit. Ein Angreifer kann eine Anfrage direkt an die API senden und dabei die Validierung umgehen. Der Server muss alle Felder erneut überprüfen. Die Client-seitige Validierung sollte nicht der einzige Schutz sein — sie ist eine zusätzliche Ebene für den Benutzerkomfort, nicht für die Datensicherheit.

Der zweite Fehler ist das Blockieren der Sendeschaltfläche ohne Nachrichten. Wenn die Schaltfläche inaktiv ist, sollte der Benutzer sehen, welche Felder korrigiert werden müssen. Eine graue Schaltfläche ohne Erklärung ist eine der häufigsten Ursachen für niedrige Formularkonversion. Zeigen Sie Feldfehler immer neben den Feldern an, auch wenn die Schaltfläche deaktiviert ist. Der Benutzer muss verstehen, was genau das Absenden verhindert.

Der dritte Fehler ist das Ignorieren von Querfeldprüfungen. Die Validierung jedes einzelnen Feldes ist unzureichend. Felder können voneinander abhängen: Passwort und Bestätigung, Startdatum und Enddatum, Land und Stadt. Form Validation muss diese Beziehungen überprüfen. Die Prüfung nur einzelner Felder erzeugt ein falsches Sicherheitsgefühl — das Formular könnte mit inkonsistenten Daten abgesendet werden.

FehlerFolgeLösung
Nur Client-ValidierungSicherheitslückeObligatorische Serverprüfung
Schaltfläche ohne NachrichtenNiedrige FormularkonversionFeldfehler anzeigen
Keine QuerprüfungenInkonsistente DatenFeldbeziehungen validieren
Zu häufige PrüfungenBenutzerverärgerungDebounce und Prüfung bei Fokusverlust

Häufig gestellte Fragen

Wie unterscheidet sich Form Validation von der Feldvalidierung?

Die Feldvalidierung prüft einen einzelnen Wert auf Format- oder Längenanforderungen. Die Formularvalidierung prüft alle Felder zusammen, einschließlich Querprüfungen: Passwortübereinstimmung, Feldabhängigkeiten. Die Feldvalidierung wird in der UI-Ebene durchgeführt, die Formularvalidierung — in der Domänenebene als Geschäftsregel.

Wie verwaltet man die Sendeschaltfläche des Formulars?

Verwenden Sie einen reaktiven Ansatz: fassen Sie alle Felder in einem einzigen Flow oder Observable zusammen und abonnieren Sie Änderungen. Bei jeder Änderung eines Feldes berechnen Sie den Gesamtstatus des Formulars neu. Wenn der Status gültig ist, ist die Schaltfläche aktiv. Verwenden Sie Kotlin Flow mit combine oder RxJava mit combineLatest für automatische Aktualisierungen.

Welche Validierungsbibliothek ist am besten für Android?

Android Saripaar ist die beste Wahl für deklarative Validierung mit Annotationen. Wenn das Projekt RxJava verwendet, bietet RxBinding einen reaktiven Ansatz ohne separate Bibliothek. Für einfache Formulare ist die manuelle Validierung mit Patterns und TextUtils ohne externe Abhängigkeiten ausreichend.

Ist eine serverseitige Validierung erforderlich, wenn eine clientseitige vorhanden ist?

Unbedingt. Die clientseitige Validierung verbessert die Benutzererfahrung, bietet aber keine Sicherheit. Der Server muss alle Daten erneut validieren, da die API direkt zugänglich ist. Verlassen Sie sich niemals ausschließlich auf die clientseitige Validierung zum Schutz vor fehlerhaften oder bösartigen Daten.

Wie validiert man ein Formular in Jetpack Compose?

Verwenden Sie in Jetpack Compose Kotlin Flow oder StateFlow zum Speichern des Zustands jedes Feldes. Die Validierungsfunktion nimmt den Formularzustand entgegen und gibt ein ValidationResult zurück. Die Sendeschaltfläche abonniert den Gesamtstatus. Verwenden Sie zur Anzeige von Fehlern isError in OutlinedTextField oder TextField von Compose.

Zusammenfassung

  • Form Validation ist eine umfassende Überprüfung aller Formularfelder und ihrer Beziehungen vor dem Absenden der Daten.
  • Die Feldvalidierung ist isoliert und wird in der UI durchgeführt; die Formularvalidierung berücksichtigt Querabhängigkeiten und gehört zur Domänenebene.
  • Die Sendeschaltfläche sollte bei ungültigem Formular deaktiviert sein — mit obligatorischer Anzeige der Feldfehler.
  • Android Saripaar ist die primäre Bibliothek für deklarative Validierung mit Annotationen.
  • RxBinding/Flow ist ein reaktiver Ansatz zur automatischen Neuberechnung des Formularstatus bei Änderung eines Feldes.
  • Die serverseitige Validierung ist als Sicherheitsebene obligatorisch, die clientseitige nur für die Benutzererfahrung.
  • Querprüfungen sind ein obligatorisches Element der Formularvalidierung; ohne sie kann das Formular inkonsistente Daten senden.

Wir entwickeln eine mobile Applikation schlüsselfertig

IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.

Projekt besprechen

Lesen Sie auch