フィールドに登録されBindingResult result
ているを持っています。このエラーを取り除くにはどうすればよいですか?FieldError
date
エラーが次のように追加されたと想定しますresult.rejectValue("date", "my_code", "my_message") ;
前もって感謝します
まず第一に、BindingResultはインターフェースであり、具体的なクラスではなく、インターフェースはエラーを削除する方法を指定していません。
扱っているインターフェースの実装によっては、これを行うためのメソッド(BindingResultインターフェースで指定されているもの以外)がある場合がありますが、それはありそうにないようです。
私が考えることができる唯一のことは、新しいBindingResultインスタンスを作成してから、エラーをループして、新しいインスタンスで無視したいものを除くすべてを再作成することです。
これは@GreyBeardedGuyAnswerを実装する例です。次のような名前ので呼び出されたerror
へのリンクを削除したいとします。field
specialField
class
MyModel
modelAttribute
myModel
BindingResult
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);
}
重要な質問は、そもそもどうやってそこにたどり着いたのかということです。java.util.Datedate
フィールドであり、フォーマットの問題が原因でバインディングが失敗したと思いますか?
たとえば、あなたが入れて01/01/1970
、それが期待されたの1970-01-01
か、それとも似たようなものですか?ここでの理由は、SpringMVCにデフォルトの日付バインダーがあるためです。日付の文字列表現を取得してjava.util.Dateに変換する必要がありますが、適切な形式と一致しないため失敗しました。
@InitBinderと、文字列から日付への変換をオーバーライドしてさまざまな形式を受け入れる方法を確認してください。