首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正在验证列表为空的表单

正在验证列表为空的表单
EN

Stack Overflow用户
提问于 2015-03-18 12:30:01
回答 1查看 453关注 0票数 0

目前,我有这个表单变量:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

发布于 2015-03-19 16:31:35

您可以在Play框架中定义自己的验证约束。在此之前,我还想使用表单验证来测试列表是否为空。

我使用了以下代码

代码语言:javascript
复制
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))
  }
)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29114179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档