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

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

假设我们的form定义如下:

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("[email protected]", "[email protected]", "[email protected]")

直接调用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]

第2钟方式不够灵活,需要手工从字符串中解析出索引,建议使用第1种方式。

欢迎光临我们的小站:

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

时间: 2024-08-28 03:06:37

Play-Scala开发技巧 - 带索引遍历Form(arrayProperty)的相关文章

C#开发课堂实录_页数447_出版日期2016.02_完整版PDF电子书下载 带索引书签目录高清版

C#开发课堂实录_页数447_出版日期2016.02_完整版PDF电子书下载 带索引书签目录高清版_13937404 下载链接  http://pan.baidu.com/s/1bo4lFzh [作 者]张冬旭,马春兴编 [丛书名]课堂实录 [形态项] 447 [出版项] 北京:清华大学出版社 , 2016.02 [ISBN号]7-302-40539-5 [中图法分类号]TP312 [原书定价]69.00 [主题词]C语言-程序设计 [参考文献格式] 张冬旭,马春兴编. C#开发课堂实录. 北京

【IOS】IOS开发问题解决方法索引(二)

IOS开发问题解决方法索引(二) 1       不使用ARC编译,-fno-objc-arc ios5 选择了ARC但是不使用ARC编译,-fno-objc-arc http://leobluewing.iteye.com/blog/1384797 http://blog.cnrainbird.com/index.php/2012/03/13/object-c_kai_fa_zhong_hun_he_shi_yong_huo_bu_shi_yong_arc/ 2       SIGABRT错误

Android开发技巧——自定义控件之自定义属性

Android开发技巧--自定义控件之自定义属性 掌握自定义控件是很重要的,因为通过自定义控件,能够:解决UI问题,优化布局性能,简化布局代码. 上一篇讲了如何通过xml把几个控件组织起来,并继承某个ViewGroup子类,把它们封装起来使用.这是我们接触到的最简单的一种自定制控件了.但许多时候,我们还需要在布局文件中使用它们的时候,能通过属性传入一些值,来影响最终的显示结果. 我们在做项目中经常会遇到的一个情况:一张图片加一个文本的组合.比如充值账户成功之后显示的一个界面,上面是一个表示成功的

jQuery代码开发技巧收集,jquery常用的开发代码

jQuery代码开发技巧收集,jquery常用的开发代码 今天分享一个jquery常用的开发代码,大部分是网友总结的,总共60条.后期我也会陆续完善! 把我在开发中常用的写在这里,希望持续关注~~ 1. 使用siblings()来处理同类元素 // Rather than doing this $('#nav li').click(function(){ $('#nav li').removeClass('active'); $(this).addClass('active'); }); //

Intellij IDEA 14.1.4 Scala开发环境搭建

主要内容 Intellij IDEA开发环境简介 Intellij IDEA Scala开发环境搭建 Intellij IDEA常见问题及解决方案 Intellij IDEA常用快捷键 1. Intellij IDEA开发环境简介 具体介绍请参见:http://baike.baidu.com/link?url=SBY93H3SPkmcmIOmZ8H60O1k4iVLgOmdqoKdGp9xHtU-Pbdsq2cpn75ZPZPWAJxeUlwr0ravraQzOckh777beq Intelli

iOS开发——使用技术OC篇&amp;项目实战总结之开发技巧

项目实战总结之开发技巧 本文收集了25个关于可以提升程序性能的提示和技巧 1.使用ARC进行内存管理 2.在适当的情况下使用reuseIdentifier 3.尽可能将View设置为不透明(Opaque) 4.避免臃肿的XIBs 5.不要阻塞主线程 6.让图片的大小跟UIImageView一样 7.选择正确的集合 8.使用GZIP压缩 9.重用和延迟加载View 10.缓存.缓存.缓存 11.考虑绘制 12.处理内存警告 13.重用花销很大的对象 14.使用Sprite Sheets 15.避免

经典收藏 50个jQuery Mobile开发技巧集萃

1.Backbone移动实例 这是在Safari中运行的一款Backbone移动应用程序.想开始体验移动开发,一个好的出发点就是关注这个应用程序的构建方式.先不妨在你的浏览器中查看该应用程序. 相关链接:http://bennolan.com/2010/11/24/backbone-jquery-demo.html 2.使用媒体查询来锁定设备 你可能会问如何使用CSS来锁定设备(根据屏幕尺寸).比如说,你想要为iPad设计两列布局.为智能手机设计单列布局.要做到这一点,最佳办法就是使用媒体查询.

Android带索引联系人列表

网上Android联系人列表的样例也非常多,都和微信的联系人差点儿相同,因为项目用到了联系人列表索引功能(产品把字母item给去掉了),只是也还是好实现.这里我也来分享分享我的实现,免得以后忘了.那先看看效果(Demo在结尾有下载地址): 要达到的效果就是这么简单. 先说说思路吧:首先为联系人对象加入一个pinyin字段,当获取到了联系人原始数据后,把每一个联系人的名字转换为拼音.并为pinyin字段设置值. 然后获取联系人中出现过哪些字母的拼音保存为数组(这就是字母的item),然后和联系人拼

应用程序框架实战十二:公共操作类开发技巧(初学者必读)

本文专门为初学者而写,因为很多初学者可能还不了解公共操作类的作用和封装技巧,大部分有经验的程序员都会把自己所碰到的技术问题整理封装成类,这就是公共操作类.公共操作类往往具有一些通用性,也可能专门解决某些棘手问题.公共操作类是应用程序框架的核心,主要目标是解决大部分技术问题.我将在本文介绍封装公共操作类的要点,供初学者参考. 开发公共操作类的原因 很多初学者会奇怪,.Net Framework提供的API相当易用,为何还要多此一举,进行一层封装呢.下面列举封装公共操作类的一些动机. .Net Fr