目前,我有这个表单变量:
val submitRecapForm = Form(
mapping(
"recap_id" -> text,
"recap_date" -> date,
"submitted_id" -> text,
"edited_id" -> text,
"recap_items" -> list(
mapping(
"product_name" -> nonEmptyText,
"product_id" -> nonEmptyText,
"qty" -> number,
"unit_name" -> nonEmptyText,
"unit_multiplier" -> number,
"sys_qty" -> number,
"invoice_items" -> list (
mapping(
"sur_key" -> of[Long], //5
"id" -> of[Long], //2
"date" -> nonEmptyText, //1
"name" -> nonEmptyText, //3
"addr" -> nonEmptyText, //0
"qty" -> number //4
)(Invoice_items.apply)(Invoice_items.unapply)
)
)(Recap_items.apply)(Recap_items.unapply)
)
)(Recap.apply)(Recap.unapply)
)奇怪的是,我可以提交包含空recap_items列表的表单。这是一个错误吗?或者有没有其他方法可以像nonEmptyText一样将它指定为nonEmpty。
发布于 2015-03-19 16:31:35
您可以在Play框架中定义自己的验证约束。在此之前,我还想使用表单验证来测试列表是否为空。
我使用了以下代码
def nonEmptyList[T]: Constraint[List[T]] = Constraint[List[T]]("constraint.required") { o =>
if (o.nonEmpty) Valid else Invalid(ValidationError("error.required"))
}
val form: Form[A] = Form(
mapping(
"list" -> list(text).verifying(nonEmptyList)
) {
(list) => A(list)
} {
param => Some((param.list))
}
)https://stackoverflow.com/questions/29114179
复制相似问题