Ho trovato una cosa interessante in Play! convalida forma quadro. Per esempio io ho tale forma:Convalida del formato Scala Play: obbligatorio booleano non obbligatorio
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))
Quando sto associazione dati senza "myBool" presente nei miei JSON, passaggi di validazione e crea un oggetto con "myBool = false". Questo è un comportamento abbastanza strano, come se passassi gli stessi dati, ma senza il campo "mystring" otterrò Validation Errors: Map(mystring -> error.required)
che mi aspetto di vedere - poiché manca il campo.
Se sto facendo il campo booleano facoltativo, ma sto aggiungendo manualmente tale verifica:
"mybool" -> optional(boolean).verifying("mybool.required", _.isDefined)
e associare i dati senza il campo sto ottenendo l'errore previsto:
Validation Errors: Map(mybool -> mybool.required)
dati esempio dato:
{
"mystring": "stringHere",
"myint": 33
}
Perché richiesta di controllo non funziona per booleano? Qual è la soluzione migliore per questo? È un gioco! bug o semplicemente non capisco qualcosa?
Grazie per le vostre risposte.
Grazie per la risposta. Sembra una spiegazione. Quindi probabilmente non è corretto, sto usando i moduli per legare i miei dati in arrivo, che provengono da API, non da moduli HTML. Per ora userò la soluzione alternativa con controllo booleano e manuale opzionale. – psisoyev
Se fa la maggior parte di ciò che ti serve, non vedo alcun problema con l'utilizzo di Play's Forms se i dati provengono da un invio di moduli o come una richiesta API. Dovrei dire che non ho molta familiarità con Scala, quindi potrebbe esserci un modo integrato di fare quello che vuoi, ma a volte è necessario fare la tua verifica personalizzata. – estmatic