Heim >Java >javaLernprogramm >Struts 2 INPUT-Ergebnis: Wie werden Konvertierungs- und Validierungsfehler behandelt und warum wird ein INPUT-Ergebnis anstelle einer Ausnahme zurückgegeben?
Wenn eine ungültige Zeichenfolge anstelle einer Zahl eingegeben wird, sollte diese den Exception Interceptor passieren. Während des Param Interceptors sollte die Konvertierung in einen int-Typ mit Integer.parseInt fehlschlagen und eine NumberFormatException auslösen. Sollte diese Ausnahme nicht in den Value Stack verschoben werden? Warum wird das Ergebnis trotz Fehlern angezeigt?
Die Eingabe von Buchstaben in das Formular führt dazu, dass Null angezeigt wird. Warum ist das so?
Struts2 behandelt Konvertierungs- und Validierungsfehler als Eingabefehler und nicht als Blockierungsfehler. Anstatt Ausnahmen auszulösen, gibt es ein INPUT-Ergebnis zurück und benachrichtigt den Benutzer über falsche Eingaben.
In der ursprünglichen Antwort führten Konvertierungsfehler zu Null, da der Standard-Int-Wert anstelle der String-Eingabe abgerufen wurde . Allerdings hätte Conversion Interceptor die ursprüngliche Zeichenfolge speichern sollen, um sie in nachfolgenden Anfragen anzuzeigen.
Aber warum wird die Zeichenfolge als Null statt als ABC angezeigt?
Das Problem wird durch das Wertattribut in verursacht die Eingabekomponente. Die Verwendung von getText() oder getText() im Wertattribut führt zu Konvertierungsproblemen. Das Entfernen des Wertattributs oder die Verwendung von %{myIntField} löst das Problem.
Das obige ist der detaillierte Inhalt vonStruts 2 INPUT-Ergebnis: Wie werden Konvertierungs- und Validierungsfehler behandelt und warum wird ein INPUT-Ergebnis anstelle einer Ausnahme zurückgegeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!