答えて
play 2.0のテンプレートエンジンは、play 1.0 scalaモジュールから直接来ています。 Scalaのような関数型言語がどのようなメリットをもたらしているのか疑問に思っている人にとっては、確かに、これが輝く領域の1つです。
デモンストレーション:Scalaの構文で
タグは、関数呼び出しよりも何もありません。興味深いのは、htmlフラグメントが関数そのものとみなされ、最も強力な置換構文を可能にすることです。
のは、mytag.scala.htmlと呼ばれるHTMLページを定義してみましょう
ファイル:アプリケーション/ビュー/辞myTags/mytag.scala.html
タグは、上記の2つの異なる中で3つのパラメータを取り
@(level:String = "error", index: Int)(body: (String) => Html)
@level match {
case "success" => {
<p class="success" index="@index">
@body("green")
</p>
}
case "warning" => {
<p class="warning" index="@index">
@body("orange")
</p>
}
case "error" => {
<p class="error" index="@index">
@body("red")
</p>
}
}
パラメータ群:
- 文字列で表されるレベル(「エラー」にデフォルト)
- インデックス
- 最後に、bodyという関数は、文字列パラメータを受け取り、HTMLコードを返します。 bodyは独自のパラメータグループで定義されていることに注意してください。私たちがj2eeで知っているのはのjspフラグメントと同じです。
今の私たちは、このタグを使用することができる方法を見てみましょう:
@import views.mytags._
@mytag("error",2) { color =>
Oops, something is <span style="color:@color">wrong</span>
}
我々は、タグ(または関数)を使用する前に、我々はそれがどこにあるプレイを知っている必要があります。それはの目的ですインポートステートメント。 Javaパッケージの場合と同様に、インポートファイルの場所を調整する限り、タグファイルの場所(パス)は関係ありません。
これは簡単なことですが、呼び出し自体に従います。ただし、パラメータ化されたhtmlフラグメントをタグに渡しています。詳細については
、あなたは2.0が最終的に独自のドキュメントが付属しています再生このURL
でScalaのテンプレートのドキュメントを見つけることができます。
完全に不要な答えですが、私のスカラを訓練するだけです。 これは機能しませんし、クリアな滞在中は短くなるでしょうか?
@(level:String = "error", index: Int)(body: (String) => Html)
<p class="@level" index="@index">
@body(
@level match {
case "success" => "green"
case "warning" => "orange"
case "error" => "red"
}
)
</p>
最初の例を使用すると、コンパイラエラーが発生します。 「ビュー」を削除します。インポートで問題を解決しました
@import mytagsを使用します。_
全例(http://www.playframework.com/documentation/2.1.1/JavaTemplateUseCases):
Let’s write a simple views/tags/notice.scala.html tag that displays an HTML notice: @(level: String = "error")(body: (String) => Html) @level match { case "success" => { <p class="success"> @body("green") </p> } case "warning" => { <p class="warning"> @body("orange") </p> } case "error" => { <p class="error"> @body("red") </p> } }
そして今のは、別のテンプレートからそれを使ってみましょう:
の@import tags._
@notice( "エラー"){色=>おっと、何かが間違っています}
- 1. この単純なjsp 2.0タグを定義する方法
- 2. "dist"でPlay 2.0ポートを指定する
- 3. FOSUserBundle 2.0でテンプレートエンジンを定義する方法は?
- 4. play 2.0アプリケーションでakkaのスケジューラを使用する方法は?
- 5. Play!のYAMLファイルでマップを定義する方法フレームワーク?
- 6. Play 2.0 + Java vs. Play 2.0 + Scala?
- 7. Playでテンプレートを読み込んでレンダリングする方法2.0?
- 8. PLAYのようにPlay Framework 2.0で手動テストを開始する方法v1?
- 9. GLSL(OpenGL ES 2.0)で定数配列を定義する方法は?
- 10. jqplot用のJavaオブジェクトをPlayで使用する方法2.0?
- 11. Play framework 2.0 Java - モデルエラーとinitial-data.ymlの定義
- 12. Play 2.5 Scala Formsを定義する標準的な方法は何ですか?
- 13. Play Frameworkで任意のタスクを定義する方法は? (ルビーレーキなど)
- 14. Playの親モジュールで定義されたルートを使用する方法は?
- 15. スカラーテンプレートのhtmlヘルパー "options"を使用してドロップダウンを設定する方法(play 2.0)
- 16. Kotlin DSL定義で親タグと子タグをうまく結合する方法
- 17. Play 2.0のPOSTからペイロードを取得する方法
- 18. Play Framework 1.xプロジェクトを2.0に移行する方法
- 19. typescript 2.0で外部未定義変数を扱う方法
- 20. Java Play 2.0でJSonを投稿する
- 21. [String、JsObject]をPlay 2.0でマップするJSON?
- 22. EclipseをPlay Framework 2.0で使用する
- 23. VSCodeで、タグを定義するAngularコンポーネントにジャンプする方法はありますか?タグをクリックします。
- 24. IDEAとSBTでPlay 2.0アプリを設定する
- 25. MyBatis/Play 2.0
- 26. Play 2.0 Captcha
- 27. play-framework [2.0] HTTPS
- 28. Play 2.0 - 承認
- 29. Angularjs + OAuth + Play 2.0
- 30. Swagger 2.0でJSONを定義する方法Swagger UIでデフォルトのボディパラメータオブジェクトを設定するには?
私は正直なところ、スカラーの専門家ではありません。それで良い質問のように見える。 –
もうすぐplay2.0をやり直すべきです。前回、私の実験では本当に本当に素朴でした!私はScalaのエキスパートではありませんが、私は多くを学びますが、それは今まで私が最後にJavaをオフにできるという印象を与える唯一の言語です) – mandubian
この場合、レベルが成功以外のものであれば警告または間違っていると、そのcssクラスのapタグを持つことになります。 @Olivier Refaloの回答では、エラーレベルの1つに一致するPタグのみが出力されます。 – user3001