首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Play-Scala开发技巧 - 带索引遍历Form(arrayProperty)

Play-Scala开发技巧 - 带索引遍历Form(arrayProperty)

作者头像
joymufeng
发布2018-05-17 15:20:05
5800
发布2018-05-17 15:20:05
举报

    Play提供了Form、Field等表单类型,帮助开发者节省了很多表单处理方面的负担,但是有些功能目前不是很灵活,正如本文即将讨论的@helper.repeat函数,该函数目前无法让开发者直接访问元素索引,本文介绍两种方法,可以临时解决这个问题。

    假设我们的form定义如下:

case class User(_id: String, name: String, emails: List[String])
val userForm = Form[User](
    mapping(
      "_id" -> text,
      "name" -> nonEmptyText,
      "emails" -> list(nonEmptyText)
    )(User.apply)(User.unapply)
)

其中emails属性是List类型。

1. Field中如何存放List类型?

List类型在Field中是被打散存放的,所以无法直接从Field中取出该List实例,例如对于:

user.emails = List("a@smartnlp.cn", "b@smartnlp.cn", "c@smartnlp.cn")

直接调用userForm("emails").value返回None,正确的访问方式是:

userForm("emails")("[0]").value
userForm("emails")("[1]").value
userForm("emails")("[2]").value

或者

userForm("emails[0]").value
userForm("emails[1]").value
userForm("emails[2]").value

OK,背景知识介绍完毕,下面进入正题。

2. 使用Filed.indexes获取索引信息

    对于存放List属性的Field实例,其indexes属性将会返回其索引列表,类型为List[Int],代码如下:

@for(i <- userForm("emails").indexes){ 
    @userForm("emails")("[" + i + "]").value
}

3. 利用Field.name获取索引信息

@helper.repeat(userForm("emails"), min=0 ){ field =>
    @field.name
}

输出信息为:

emails[0]
emails[1]
emails[2]

4. 利用Form.value获取绑定的数据对象

@for((email, i) <- userForm.value.get.emails.zipWithIndex){
    @i - @email <br/>
}

第1种方法可以配合@import helper._下的工具函数使用;第2钟方式不够灵活,需要手工从字符串中解析出索引; 第3种方法虽然简单,但是无法配合@import helper._下工具函数使用。

欢迎光临我们的小站:

奇智智能客服机平台:http://www.smartnlp.cn

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. Field中如何存放List类型?
  • 2. 使用Filed.indexes获取索引信息
  • 3. 利用Field.name获取索引信息
  • 4. 利用Form.value获取绑定的数据对象
相关产品与服务
对话机器人
对话机器人(Conversation Robot,ICR),是基于人工智能技术,面向企业场景的 AI 服务,可应用于智能客服、服务咨询、业务办理等场景。本产品旨在帮助企业快速构建,满足自身业务诉求的对话机器人,从而减少企业人力成本或解决服务不及时问题。用户可通过对话机器人用户端引擎,实现高准确率的对话服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档