11

フィールドに登録されBindingResult resultているを持っています。このエラーを取り除くにはどうすればよいですか?FieldErrordate

エラーが次のように追加されたと想定しますresult.rejectValue("date", "my_code", "my_message") ;

前もって感謝します

4

3 に答える 3

8

まず第一に、BindingResultはインターフェースであり、具体的なクラスではなく、インターフェースはエラーを削除する方法を指定していません。

扱っているインターフェースの実装によっては、これを行うためのメソッド(BindingResultインターフェースで指定されているもの以外)がある場合がありますが、それはありそうにないようです。

私が考えることができる唯一のことは、新しいBindingResultインスタンスを作成してから、エラーをループして、新しいインスタンスで無視したいものを除くすべてを再作成することです。

于 2012-09-20T14:25:04.193 に答える
2

これは@GreyBeardedGuyAnswerを実装する例です。次のような名前ので呼び出されたerrorへのリンクを削除したいとします。fieldspecialFieldclass MyModelmodelAttributemyModelBindingResult result

List<FieldError> errorsToKeep = result.getFieldErrors().stream()
                .filter(fer -> !fer.getField().equals("specialField "))
                .collect(Collectors.toList());

        result = new BeanPropertyBindingResult(vacancyDTO, "vacancyDTO");

        for (FieldError fieldError : errorsToKeep) {
            result.addError(fieldError);
        }
于 2019-07-09T11:00:54.217 に答える
0

重要な質問は、そもそもどうやってそこにたどり着いたのかということです。java.util.Datedateフィールドであり、フォーマットの問題が原因でバインディングが失敗したと思いますか?

たとえば、あなたが入れて01/01/1970、それが期待されたの1970-01-01か、それとも似たようなものですか?ここでの理由は、SpringMVCにデフォルトの日付バインダーがあるためです。日付の文字列表現を取得してjava.util.Dateに変換する必要がありますが、適切な形式と一致しないため失敗しました。

@InitBinderと、文字列から日付への変換をオーバーライドしてさまざまな形式を受け入れる方法を確認してください。

于 2012-09-20T15:21:27.657 に答える