2012-03-25 6 views
0

条件付きレンダリングを行うには、テンプレート内で等価比較を実行する必要があります。playframework2.0のカスタムタグ、またはテンプレートでequalsを実行する

たとえば、私は<li class="active">です。ここでは、@request.path@controllers.routes.Application.action()が等しい場合にのみアクティブなレンダリングをしたい、そうでない場合は空の文字列が問題ありません。

docsで説明したように文がparanthesisの認識に限定されるよう、したがって、動作しない場合。

また、カスタムタグの作成を手伝うことができれば、それも機能する可能性があります。それを行う方法に関するドキュメントはありません。私はjavaを好むでしょう。スカラの代替がある場合は、私はまだそれを把握していないので、冗長の側でエラーをしてください。

ありがとうございました。

答えて

1

カスタムタグがなければ、あなたはあなたのテンプレートでこのような何かを試すことができます。

<li class="@("active".when(request.path == controllers.routes.Application.action().toString()))"> 

の例では、サンプルアプリケーション(サンプル/ javaの/フォーム/アプリ/ビュー/ main.scala.html)であります。
action()がStringではなくCallを返すため、toString()を忘れてはいけません。そうする

カスタムタグは次のようになります。使用の

@menu_element(name: String, route: Call) = { 
<li class="@("active".when(route.toString() == request.path))"><a href="@route">@name</a></li> 
} 

例:

<ul> 
@menu_element("Home", controllers.routes.Application.index) 
</ul> 
+0

おかげで、魔法のように働きました。私はタグのバージョンを使用し、マイナーな変更を加えました。 '@Messages(name)'を呼び出し、i18nコードを渡した。タグを別のファイルに入れて 'menu_element'を削除してください – Nasir

関連する問題