2011-12-29 9 views
2

私のテンプレートでは、要素のリストを反復処理しています。これらのループでbreak;またはcontinue;にしたい場合があります。プレイテンプレート言語でこれをどうすればできますか?playframework:Javaのcontinue&breakと同等のテンプレートですか?

私はここでドキュメントを確認しています: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} 

だけ追加

を継続:下の2つの例のユースケースは、質問.contains();のようなリストを使って何かできますか?誰もこの言語の素晴らしいガイドを知っていますか?

答えて

3

私は休憩と継続がネイティブにサポートされていないと思いますが、あなたはいつでもこれらのケースを処理する独自のタグを作成できます。詳細はhttp://www.playframework.org/documentation/1.1.1/templates#fasttagsをご覧ください。

#listのデフォルトの実装はGroovyInlineTags#_listです。これは余分な引数のためにカスタマイズするために必要なすべてのものを提供します。

私は個人的に、このロジックをサーバー側で処理し、表示したいものだけをビューに渡します。 breakはもはや必要なくなり、continueは既存のタグを使用してif-elseステートメントとして実装できます。

オブジェクトのメソッドを呼び出します。たとえば、#{myList.contains( 'whatever')}を使用することもできますし、Groovy elvis演算子をnull-safetyのためにそこに置くこともできます。 #{if myList?contains( 'whatever')}

ちなみに、どのバージョンのPlayフレームワークを使用していますか? 1.0.2はかなり古いです! 1.1.1は最新の1.1ブランチ、1.2.4は最新バージョンのトランクです。また、実験2には良いプレイ2(http://www.playframework.org/2.0)がありますが、しばらくの間はプロダクションで使用しないようにすることをお勧めします。フレームワークのそれ以降のバージョンには、はるかに優れたドキュメントがあります。開発モードで実行している場合は、http://localhost:9000/@documentationのバージョン固有のドキュメントにアクセスすることもできます(必要に応じてポート番号を修正してください)。