4

テンプレートで次のような再利用可能な純粋な Scala ブロックを宣言できることはわかっています。

@title(text: String) = @{
  text.split(' ').map(_.capitalize).mkString(" ")
}

テンプレートを呼び出すことができるよう@title("someString")になりましたが、このコード ブロックはこのテンプレートの外部からはアクセスできません。

他のテンプレートからもアクセスできるブロックを宣言するにはどうすればよいですか?

次のような新しいテンプレートtitle.scala.htmlを作成しようとしました。

@(text : String)
@{
    text.split(' ').map(_.capitalize).mkString(" ")
}

任意のテンプレートから呼び出すことができるよう@title("someString")になりましたが、テンプレート内の最初のブロックとまったく同じ結果にはなりません (最初のケースでは aStringを返しHtml、2 番目のケースでは返されると仮定します)。

私は Play フレームワーク 2.0.4 を使用しており、Java でコーディングしています (したがって、Scala の知識は限られています)。

4

1 に答える 1

6

Usingtagsは、HTML コードの再利用可能なブロックを構築することを目的としているため、返されます。Html

一般的なタイプのデータを簡単に操作するには、カスタム Java クラスを簡単に追加できます (たとえば、新しく作成されたutilsパッケージ (appディレクトリ内) の場合)、必要なすべてのフォーマッタを静的メソッドとして準備できます。

utils.MyFormats.java:

package utils;

import org.apache.commons.lang3.text.WordUtils;

public class MyFormats {

    public static String capitalize(String str) {
        return WordUtils.capitalize(str);
    }

    public static int sumElements(int a, int b) {
        return a + b;
    }

}

テンプレート内:

<h2>Capitalized each word: @(utils.MyFormats.capitalize("foo bar"))</h2>
<h3>Sum of two integers, 2+3 = @(utils.MyFormats.sumElements(2, 3))</h3>
于 2013-04-14T11:28:07.610 に答える