1

私は PlayFramework 2.1 と Scala をメイン言語として使用しています。

入力日付の Web フォームがあります。ユーザーに次のパターンに従って日付を入力するように強制したい: dd/MM/yyyy.

したがって、コントローラーで次のようなパターンを正確に記述します。

 val myForm = Form(
    mapping(
      "date" -> date("dd/MM/yyyy")
    )(MyModel.apply)(MyModel.unapply)
  )

ただし、次のようなパターンdd/mm/yyyも受け入れられます....たとえば:17/02/201の代わりに17/02/2013. それどころか、dd/mm私が期待するものは受け入れられません。

年の4桁で予想されるパターンを保証する効率的でクリーンな方法はありますか?

4

1 に答える 1

3

少し違う角度から見てみます。おそらく、年が 999 よりも大きい (場合によってはそれよりも大きい) ことを確認する必要があります。

verifyそのためには、マッピングが必要です。これを行うには、次のようなものを作成できますConstraint

def minYear(minYear: Int): Constraint[Date] = 
  Constraint[Date]("constraint.minYear", minYear) { o =>
    if (o.getYear >= minYear) Valid
    else Invalid(ValidationError("error.minYear", minYear))
  }

その後、次のように使用できます。

val myForm = Form(
  mapping(
    "date" -> date("dd/MM/yyyy").verifying(minYear(999))
  )(MyModel.apply)(MyModel.unapply)
)

ファイルにconstraint.minYearanderror.minYearを追加することを忘れないでください。messages

于 2013-02-17T16:20:47.643 に答える