ホームページ > Java > &#&チュートリアル > Struts 2 の INPUT 結果: 変換エラーと検証エラーはどのように処理されますか?また、例外ではなく INPUT 結果が返されるのはなぜですか?

Struts 2 の INPUT 結果: 変換エラーと検証エラーはどのように処理されますか?また、例外ではなく INPUT 結果が返されるのはなぜですか?

Mary-Kate Olsen
リリース: 2024-12-03 03:30:09
オリジナル
828 人が閲覧しました

Struts 2 INPUT Result: How are Conversion and Validation Errors Handled, and Why is an INPUT Result Returned Instead of an Exception?

Struts2 INPUT 結果: 仕組み?変換/検証エラーはどのように処理されますか?

主な質問

数値の代わりに無効な文字列が入力された場合、例外インターセプターを通過する必要があります。 Param インターセプター中、Integer.parseInt を使用した int 型への変換は失敗し、NumberFormatException がトリガーされます。この例外は値スタックにプッシュされるべきではないでしょうか?エラーがあるにもかかわらず結果が表示されるのはなぜですか?

補足質問

フォームにアルファベットを入力すると、ゼロが表示されます。これはなぜですか?

Concept

Struts2 は、変換エラーと検証エラーをブロック エラーではなく入力エラーとして扱います。例外を発生させる代わりに、INPUT 結果を返し、間違った入力をユーザーに通知します。

詳細ワークフロー

  1. パラメータ インターセプタ: パラメータの設定を試みます。 devMode で RuntimeException (NumberFormatException など) が発生した場合、アクション エラーにエラー メッセージが追加されます。それ以外の場合、例外は抑制されます。
  2. 変換エラー インターセプター: 変換エラーをチェックし、見つかった場合はフィールド エラーを追加します。また、後続のリクエストで表示するために元の値も保存されます。
  3. 検証インターセプター: 要求された検証を実行し、基準を満たさないフィールドのフィールド エラーを追加します。
  4. ワークフローインターセプター: フィールド エラーをチェックします。何も見つからない場合、チェーンは継続します。エラーが存在する場合は、INPUT 結果が返されます。

サイド質問の回答

元の回答では、文字列入力ではなくデフォルトの int 値を取得したため、変換エラーはゼロになりました。 。ただし、変換インターセプターは、後続のリクエストで表示するために元の文字列を保存する必要がありました。

しかし、文字列が abc ではなくゼロとして表示されるのはなぜですか?

この問題は、次の value 属性によって引き起こされます。入力コンポーネント。 value 属性で getText() または getText() を使用すると、変換の問題が発生します。 value 属性を削除するか、%{myIntField} を使用すると、問題は解決します。

結論

  • インターセプター スタックが適切に構成されていることを確認してください。
  • 入力の value 属性を確認してください
  • テスト目的で value 属性を削除して、正しいことを確認します。動作。

以上がStruts 2 の INPUT 結果: 変換エラーと検証エラーはどのように処理されますか?また、例外ではなく INPUT 結果が返されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート