2011-12-29 55 views
2

在我的模板中,我遍歷了一系列元素。有些情況下我想在這些循環中使用break;continue;。我怎樣才能在模板語言中做到這一點?playframework:相當於Java的繼續和休息的模板?

我一直在檢查文檔在這裏: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();這樣的列表做些什麼嗎?有人知道這種語言的不錯指南嗎?

回答

3

我認爲中斷和繼續不是本機支持的,但您始終可以創建自己的標記來處理這些情況。詳情請看http://www.playframework.org/documentation/1.1.1/templates#fasttags

#list的默認實現是GroovyInlineTags#_list - 這應該會給你所需的所有東西來定製它以獲取額外的參數。

就我個人而言,我會在服務器端處理這個邏輯,並且只傳入你想要顯示的視圖。那麼不再需要中斷,並且繼續可以使用現有標記作爲if-else語句實現。

至於調用對象的方法,當然。例如,您可以使用#{if myList.contains('whatever')},或者甚至可以將Groovy elvis運算符放在那裏以實現零安全性,例如, #{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版本的特定文檔(根據需要更正端口號)。