1

私はここ数日、仕事で概念実証アプリケーションのために Play 2.0 フレームワークを使用しています。ASP.Net MVC の HtmlHelpers を思い出したので、最初に確認したかったのはカスタム タグ機能でした。問題は、それらを機能させることができないようで、機能を誤用しているのか、何かを誤解しているのか疑問に思っていたことです。

私がやりたいことの簡単な例を次に示します。テンプレートのどこでも @script("scriptname.js") を使用して、タグ全体を置換できるようにしたいと考えています。

これが私がこれまでに得たものです:

main.scala.html

@(title: String, scripts: Html = Html(""))(content: Html)
@import tags._

<!DOCTYPE html>
<html>
    <head>
        <!-- this is how I would like to use the helper/tag -->
        @script("jquery.js")
        @script("jquery-ui.js")

        <!-- let views add their own scripts. this part is working OK -->
        @scripts
    </head>
    <body>
        @content
    </body>    
</html>

app/views ディレクトリの下に「tags」というサブディレクトリを作成しました。そこで、script.scala.html タグ/ヘルパー ファイルを作成しました。

@(name: String) 

<script src="@routes.Assets.at("javascripts/@name")" type="text/javascript"></script>

私が抱えている問題は、 @script() を使用するたびに、出力に @name パラメータが含まれることです。たとえば、 @script("x.js") は実際に出力します

<script src="assets/javascripts/@name" type="text/javascript"></script>

私は何を間違っていますか?

記録のために、私はドキュメントを読み、ここで検索しましたが、これらのリンクのどちらもこれを理解するのに役立ちませんでした:

http://www.playframework.org/documentation/2.0.3/JavaTemplateUseCases

Play 2.0 でタグを定義するには?

4

1 に答える 1

3

@routes.Assets.at(...)Scala 式routes.Assets.at(...)を評価し、結果を出力に代入します。式をテキストで評価してその式を取得できるようにする再帰的評価はありません。これは、期待しているようです。

あなたがしようとしていることは、

@routes.Assets.at("javascripts/" + name)
于 2012-09-20T05:18:31.787 に答える