在我的模板中,我正在迭代元素列表。在某些情况下,我希望在这些循环中break;
或continue;
。我将如何在播放模板语言中执行此操作?
我一直在查看这里的文档:http://www.playframework.org/documentation/1.0.2.1/tags但我似乎无法找到有关如何破坏或继续的任何信息。以下是两个示例用例:
#{list items:myList as:'my'}
#{if my.name == "hello"}
//Do something
//I'd like to break here.
#{/if}
#{/list}
稍后在我的代码中我有一个嵌套的列表迭代,就像这样......
#{list items:item, as:'i'}
#{list items:anotherItem, as:'aI'}
#{if i.name != aI.name}
//Do Something here.
//I'd like to continue here.
#{/if}
#{/list}
#{/list}
继续
只是一个额外的问题..我可以使用像.contains();
这样的列表吗?有没有人知道这种语言的好指南?
答案 0 :(得分:3)
我认为break和continue本身不受支持,但您始终可以创建自己的标记来处理这些情况。有关详细信息,请查看http://www.playframework.org/documentation/1.1.1/templates#fasttags。
#list的默认实现是GroovyInlineTags #_list - 这应该为您提供了为额外参数自定义所需的一切。
就个人而言,我会在服务器端处理这个逻辑,并且只将想要显示的内容传递给视图。然后不再需要break,并且可以使用现有标记将continue实现为if-else语句。
当然,对于对象的调用方法。例如,你可以使用#{if myList.contains('whatever')}或者甚至将Groovy elvis操作符放在那里以保证null安全性,例如#{if myList?.contains('whatever')}
顺便提一下,您使用的是哪个版本的Play框架? 1.0.2现在已经很老了! 1.1.1是1.1分支的最新版本,1.2.4是trunk的最新版本。还有Play 2(http://www.playframework.org/2.0)这对实验有好处,但你可能想暂时停止使用它进行生产。该框架的更高版本具有更好的文档。在开发模式下运行时,您还可以在http://localhost:9000/@documentation访问特定于版本的文档(根据需要更正端口号)。