【问题标题】:Reusable Scala code for all views in PlayPlay 中所有视图的可重用 Scala 代码
【发布时间】:2013-04-06 13:39:24
【问题描述】:

我知道我可以像这样在模板中声明一个可重用的纯 Scala 块:

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

我现在可以在模板中调用@title("someString"),但无法从该模板外部访问此代码块。

我怎样才能声明这样一个可以从其他模板访问的块?

我尝试像这样创建一个新模板 title.scala.html

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

我现在可以从我想要的任何模板调用@title("someString"),但这并没有给我与模板内的第一个块完全相同的结果(我假设在第一种情况下它返回一个String 而它在第二种情况下返回Html)。

我正在使用 Play 框架 2.0.4,并且我正在使用 Java 进行编码(因此我的 Scala 知识有限)。

【问题讨论】:

    标签: templates playframework playframework-2.0 reusability


    【解决方案1】:

    使用tags 旨在构建可重用的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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多