play框架:相当于Java的模板继续和;打破?

时间:2011-12-29 12:16:03

标签: playframework

在我的模板中,我正在迭代元素列表。在某些情况下,我希望在这些循环中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();这样的列表吗?有没有人知道这种语言的好指南?

1 个答案:

答案 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访问特定于版本的文档(根据需要更正端口号)。