3

fillAndValidateフォームで使用しているときに、奇妙な動作を特定するのに苦労しています。問題を切り分けるために考えられる最も単純な使用例を次に示します。

object Application extends Controller {

  case class SimpleForm(val field: String)

  val form = Form(
    mapping(
      "field" -> text.verifying("message", (s: String) => false)
    )(SimpleForm.apply)(SimpleForm.unapply))

  def index = Action { implicit request =>
    println("bindFromRequest: " + form.bindFromRequest.errors)
    println("fillAndValidate: " + form.fillAndValidate(SimpleForm("value")).errors)

    Ok
  }
}

query で index ページをリクエストすると?field=value、コンソールに次のように表示されます。

bindFromRequest: List(FormError(field,message,WrappedArray()))
fillAndValidate: List(FormError(field,message,WrappedArray()))

私の知る限り、これは予想される動作です。

ただし、マッピングを直接検証するなど、グローバル エラーを使用する場合は、次のようになります。

val form = Form(
  mapping(
    "field" -> text
  )(SimpleForm.apply)(SimpleForm.unapply)
  .verifying("message", (s: SimpleForm) => false))

私が得る振る舞いは非常に驚くべきものです:

bindFromRequest: List(FormError(,message,WrappedArray()))
fillAndValidate: List()

fillAndValidateエラーを無視するのはなぜですか?この問題を回避する方法はありますか?

4

0 に答える 0