既存の(比較的簡易な)登録機能があって、一括登録機能を追加開発したい。
エラーはファイルとして返却する。
既存のBeanValidationを流用したい。
と、なったときに困ったのがエラーメッセージ。
Springでは適当にリクエストを受け付けるメソッドのパラメーターとしてBindingResultを設定したり、@ValidateをつけたFormを用意しておけばよしなにバリデーションをかけられるし、メッセージはview側で解決できる。
JSPでは(確か)<form:error>
で表示できる。
が、今回はサーバー側でメッセージを解決せねばならない・・・。
幸い、MessageSourceResolvable
を実装しているようなので、
@Autowired ms: MessageSource
@Autowired validator: Validator
/* formに値をつめるとして */
val e = new BeanPropertyBindingResult(form, "form")
ValidationUtils.invokeValidator(validator, form, e)
val msges = e.getFieldErrors.asScala.toSeq.map(e => ms.getMessage(e, Locale.JAPAN)
みたいな感じで解決できた。