Heim >Java >javaLernprogramm >Wie geht Struts2 mit Eingabefehlern um und gibt ein INPUT-Ergebnis zurück?

Wie geht Struts2 mit Eingabefehlern um und gibt ein INPUT-Ergebnis zurück?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-01 12:52:10240Durchsuche

How Does Struts2 Handle Input Errors and Return an INPUT Result?

Wie funktioniert das Eingabeergebnis in Struts2?

Das INPUT-Ergebnis von Struts2 wird ausgelöst, wenn der Workflow-Interceptor Feldfehler erkennt, entweder von Konvertierungs- oder Validierungsfehler. Anstatt Ausnahmen auszulösen, werden diese Fehler als Eingabefehler betrachtet, sodass ein INPUT-Ergebnis zurückgegeben wird, um eine Korrektur der Benutzereingaben anzufordern.

Umgang mit Konvertierungs-/Validierungsfehlern

Struts2's Der Fehlerbehandlungsmechanismus umfasst mehrere wichtige Schritte:

  1. Parameter Interceptor: Versucht, Parameter festzulegen. Wenn während der Konvertierung eine Laufzeitausnahme auftritt (z. B. NumberFormatException), wird diese stillschweigend verschluckt oder mit einer Entwicklerbenachrichtigung protokolliert.
  2. Conversion Errors Interceptor: Identifiziert alle Konvertierungsfehler und fügt Feldfehler zum ActionContext hinzu . Außerdem werden Originalwerte gespeichert, um sicherzustellen, dass sie dem Benutzer angezeigt werden, wenn das Feld Validierungsfehler enthält.
  3. Validation Interceptor: Führt Validierungen basierend auf XML, Anmerkungen oder Aktionsmethoden durch. Wenn die Validierung fehlschlägt, werden für jedes nicht konforme Feld Feldfehler zum ActionContext hinzugefügt.
  4. Workflow Interceptor: Prüft sowohl bei der Konvertierung als auch bei der Validierung auf Feldfehler. Wenn Fehler vorliegen, wird ein INPUT-Ergebnis zurückgegeben. Andernfalls wird mit dem nächsten Interceptor fortgefahren.

Um diesen Mechanismus zu aktivieren, stellen Sie sicher, dass die folgenden Interceptoren in der richtigen Reihenfolge definiert sind:

<interceptor-ref name="params"/>
<interceptor-ref name="conversionError"/>
<interceptor-ref name="validation"/>
<interceptor-ref name="workflow"/>

Zusätzlicher Hinweis zur Ganzzahlkonvertierung

Um die Konvertierung nicht numerischer Zeichen in Null zu handhaben, vermeiden Sie die Verwendung des Werts Attribut in Verbindung mit einem Getter, der einen int-Datentyp zurückgibt. Dies kann einen zusätzlichen Konvertierungsfehler verursachen und zu einem Wert von 0 führen. Verwenden Sie stattdessen die folgende Syntax:

<s:textfield name="myIntField"/>

Oder

<s:textfield name="myIntField" value="%{myIntField}"/>

Das obige ist der detaillierte Inhalt vonWie geht Struts2 mit Eingabefehlern um und gibt ein INPUT-Ergebnis zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn