Saya tidak dapat mengikat nilai ke dalam Formulir[M]. Tampaknya itu tidak berhasil karena Daftar: jika saya mengubah Daftar[String] menjadi String, itu berhasil. Ini kodenya
case class SearchCriteria (
val q: Option[String],
var fq_chset: List[String]
)
val theSearchForm: Form[SearchCriteria] = Form(
mapping(
"q" -> optional(text),
"fq_chset" -> list(text)
)
)(SearchCriteria.apply _)(SearchCriteria.unapply _)
def foldSearchCriteria(searchForm: Form[SearchCriteria]): Either[Throwable, SearchCriteria] = {
foldForm[SearchCriteria](searchForm, { searchCriteria =>
Logger.debug(searchCriteria.toString())
Right(searchCriteria)
})
}
def foldForm[F](aForm: Form[F], onSuccess: F => Either[Throwable,F]): Either[Throwable,F] = {
aForm.fold(
hasErrors = { form =>
Left(new RuntimeException("Errors while folding Form"))
},
success = { formData =>
onSuccess(formData)
}
)
}
Apa yang saya dapatkan adalah:
foldSearchCriteria(theSearchForm.bind(Map("q" -> "ValueQ")))
>> SearchForm( Some(ValueQ), None ) )
foldSearchCriteria(theSearchForm.bind(Map("fq_chset" -> "Value1")))
>> SearchForm( None, Some(List()) )
Ada ide?