2012-03-25 4 views
1

Play(2.0)フレームワークのテンプレートエンジンに何らかの種類のinstanceof機能があるかどうかを知りたいと思います。これにより、モデルレイヤーで継承構造を効果的に使用することができます。Playフレームワークのテンプレートエンジンに "instanceof"機能はありますか?

これは私が(このテンプレートがコンパイルされないことを除いて)希望のものを基本的に

@(instance: Superclass) 

@main { 
    @if(instance instanceof Subclass) { 
     Subclass instanceOfSubclass = (Subclass) instance;  
    } 
} 

編集:は、私は、Javaのための具体的なプレイに意味します。

答えて

4

スカラパターンマッチングを使用します。

@(instance: Superclass) 

@main { 
    @instance match { 
    case foo: Foo => { 
     <a href="@routes.Foo.index()">@foo.title</a> 
    } 
    case bar: Bar => { 
     <a href="@routes.Bar.index()">@bar.title</a> 
    } 
    } 
} 
+1

それはトリックです!ありがとうございました! – Christophe

+1

'Foo'と' Bar'はパターンマッチングのための抽出(unapply)を持たなければならないので、それはJavaの世界ではうまくいきません。私は今トリッキーなことを知るためにカリカリです。どんな手掛かり? –

+1

私は確かに分かりません。一方では、このパターンマッチはそのタイプをチェックするだけです。一方、Playでは、まだJavaでバイトコードの魔法がい​​くつかあります。それ以外の場合、Scalaテンプレートは、JavaとScalaの両方のAPIを提供するフレームワークではあまり意味がありません。 –

関連する問題