私はPlayで面白いことを見つけました!フレームワークは検証を形成します。たとえば、私は、このような形式になります。Scalaプレイフォームの検証:必須ブール値は必須ではありません
case class Foo(mystring: String, myint: Int, mybool: Boolean) { // doing cool stuff here }
val myForm = Form(
mapping(
"mystring" -> text,
"myint" -> number,
"mybool" -> boolean
)(Foo.apply)(Foo.unapply))
私はJSON、検証パスに存在する「mybool」せずにデータを結合し、「mybool = false」を持つオブジェクトを作成しています。同じデータを渡すかのように、これはかなり奇妙な振る舞いですが、 "mystring"フィールドがなければ、フィールドが見つからないと私は期待しているValidation Errors: Map(mystring -> error.required)
を得ます。
私はブールフィールドはオプション作ってるんだが、私は手動で、このようなチェックを追加している場合:
"mybool" -> optional(boolean).verifying("mybool.required", _.isDefined)
そして、私が予想されるエラーを取得していますフィールドせずにデータをバインドします
Validation Errors: Map(mybool -> mybool.required)
例データセット:
{
"mystring": "stringHere",
"myint": 33
}
を必要なチェックがブールのために動作しないのはなぜ?何が最善の回避策ですか?それは遊びですか!バグか、何か分からないだけですか?
ご回答ありがとうございます。
あなたの答えをありがとう。説明のように聞こえる。次に、HTMLフォームからではなく、APIから来る入力データをバインドするためにフォームを使用していると誤っている可能性があります。今のところ、オプションのブール値と手動によるチェックで回避策を使用します。 – psisoyev
あなたが必要としているものの大部分を占めている場合、データがフォームの提出やAPIリクエストから来ているかどうかにかかわらず、Playのフォームの使用に問題はありません。 Scalaにはあまり精通していないと言わなければなりません。あなたが望むことを実行する組み込みの方法がいくつかあるかもしれませんが、時には独自のカスタム検証を行う必要があります。 – estmatic