数値の代わりに無効な文字列が入力された場合、例外インターセプターを通過する必要があります。 Param インターセプター中、Integer.parseInt を使用した int 型への変換は失敗し、NumberFormatException がトリガーされます。この例外は値スタックにプッシュされるべきではないでしょうか?エラーがあるにもかかわらず結果が表示されるのはなぜですか?
フォームにアルファベットを入力すると、ゼロが表示されます。これはなぜですか?
Struts2 は、変換エラーと検証エラーをブロック エラーではなく入力エラーとして扱います。例外を発生させる代わりに、INPUT 結果を返し、間違った入力をユーザーに通知します。
元の回答では、文字列入力ではなくデフォルトの int 値を取得したため、変換エラーはゼロになりました。 。ただし、変換インターセプターは、後続のリクエストで表示するために元の文字列を保存する必要がありました。
しかし、文字列が abc ではなくゼロとして表示されるのはなぜですか?
この問題は、次の value 属性によって引き起こされます。入力コンポーネント。 value 属性で getText() または getText() を使用すると、変換の問題が発生します。 value 属性を削除するか、%{myIntField} を使用すると、問題は解決します。
以上がStruts 2 の INPUT 結果: 変換エラーと検証エラーはどのように処理されますか?また、例外ではなく INPUT 結果が返されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。