如何使用 Play 2.0 定义标签?

2024-02-26

关于 Play 2.0 模板引擎的文档并不多。

如何使用 Scala 模板创建标签?


play 2.0 中的模板引擎直接来自 play 1.0 scala 模块。如果您仍然想知道像 Scala 这样的函数式语言能带来什么好处,那么这肯定是它的亮点领域之一。

示范:

在 scala 语法中,标签只不过是函数调用。有趣的是,html 片段本身被视为函数,允许最强大的替换结构。

让我们定义一个名为的 html 页面mytag.scala.html

文件:apps/views/mytags/mytag.scala.html

@(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>
    }    
}

上面的标签采用 2 个不同参数组中的 3 个参数:

  1. 级别,由字符串表示(默认为“error”)
  2. An index
  3. 最后是一个名为 body 的函数,它接受一个字符串参数并返回 HTML 代码。请注意,body 是在其自己的参数组中定义的。它相当于我们在 j2ee 中所知道的jsp片段.

现在让我们看看如何使用这个标签:

@import views.mytags._

@mytag("error",2) { color =>
    Oops, something is <span style="color:@color">wrong</span>
}

在我们使用标签(或函数)之前,我们需要让 Play 知道它的位置:这就是import陈述。请注意,只要调整导入位置,标记文件的位置(路径)就无关紧要,就像 Java 包一样。

遵循呼叫本身,这很简单。但请注意,我们将参数化的 html 片段传递给标签。

有关更多详细信息,您可以在此处找到 scala 模板文档URL http://scala.playframework.org/modules/scala-0.9.1/templates

Play 2.0 最终将附带自己的文档。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Play 2.0 定义标签? 的相关文章

随机推荐

  • 在 FusionTablesLayer 中应用查询后可以迭代标记吗?

    我目前有一个过滤器在渲染为地图图层的融合表上工作 并且我希望在过滤器更改时进行缩放以最适合所有数据 我想我需要等到应用查询 然后迭代标记以找到最小 最大 x 和 y 位置并平移到该矩形 但我在 Maps api 中没有看到访问标记的方法一层
  • 更新 QML 中 var 属性的绑定

    如果你看一下这一页 http doc qt io qt 5 qml var html它指出 当对象更改时 与 var 属性的绑定不会自动更新 Item property var car new Object wheels 4 Text te
  • javascript中括号的作用

    我想知道以下和括号的作用之间的区别 foo bar replace a b and foo bar replace a b 括号是否要求在继续替换方法之前首先计算所包含的表达式 我在我正在维护的代码中看到了这一点 并且很好奇为什么它是必要的
  • Microsoft Visual C++ 运行时版本?我需要把它们全部保留吗?

    我环顾四周 不确定是否能找到明确的答案 所以如果之前有人问过这个问题 我很抱歉 我的 Google Fu 让我失望了 我们正在针对 NET Framework 开发软件 但从历史上看 我们必须包含许多第三方组件 此外 从历史上看 这些往往与
  • 如何在不清理整个项目的情况下强制“build.rs”再次运行?

    我怎样才能强迫build rs再次运行而不清理我的整个项目 我检查了cargo build help但我找不到任何相关的东西build rs 如果您打印 cargo rerun if changed
  • 在画布上画线,但最后的线褪色了

    我正在尝试在黑色背景上绘制白线网格 底部的 3 条水平线似乎已经褪色 直到我重新绘制它们 我不明白为什么会发生这种情况 有没有人见过这个和 或知道我做错了什么 这是因为线条是在它们所在的所有像素上绘制的 在画布上定位是浮动的 当你想在画布上
  • 为什么将 pickle 文件加载到内存中会占用更多空间?

    我有一个文件夹包含 7603 个文件pickle dump 平均文件大小为6 5MB 因此文件占用的总磁盘空间约为48GB 每个文件都是通过 pickle 一个列表对象获得的 该列表的结构为 A 50 A str int 92 floats
  • 如何将 erb 转换为 html?

    想象一下我在轨道上 template这是一个实例ActionTemplate View 问题是 我该如何转换 template谁的 template source是 to hello from erb 谢谢 尝试这个 ERB new tem
  • 与“this”没有类型/差异的显式自引用

    我了解用途显式键入的自引用 http www scala lang org node 124 trait T self T2 gt 在身体里 self是一个别名this但有更精确的类型T with T2 现在 我在代码中看到了这一点 tra
  • AWS RDS SQL Server 无法删除数据库

    我尝试通过导出数据层应用程序迁移 SQL Server 数据库 bacpac文件 从 Amazon RDS 实例到其他实例 但导入失败 所以现在我想删除数据库 它是空的 当我尝试 DROP DATABASE mydatabase 我收到错误
  • 捕获 java.lang.OutOfMemoryError?

    文档 http java sun com javase 6 docs api java lang Error html for java lang Error says Error 是 Throwable 的子类 表示合理的应用程序不应尝试
  • SQL 比较和空值的问题

    我有一个更新查询 当一个表中的值与另一表中的字段不匹配时 该查询会更新一个表中的字段 UPDATE table1 SET a field1 b field3 FROM table1 a table2 b WHERE a field2 b f
  • 开发环境与测试和生产环境不同?

    如果开发人员想要实现sql2008开发环境 但我们仍然被迫使用sql2000测试和sql2000生产环境 你会怎么说 在开发服务器上使用sql2008会有什么问题吗 当然 您需要知道哪些功能您无法使用 因此将工作从 sql2008 服务器迁
  • 扑。在非常大的 ListView 上设置 ListView 初始位置

    我想创建一个几乎无限的元素列表 但我想将列表的初始位置设置为某个特定元素 像这样的图片 其中索引 0 是初始位置 并且该列表可能会也可能不会在两个方向上延伸很长 我可以创建我的元素 例如 Widget build tile int i re
  • 文本装饰:无不适用于 ul

    我看到了很多与这个主题相关的问题 但没有一个回答我的问题 我正在为一个网站制作一个侧边栏 我试图在与侧边栏宽度相同的框中创建链接 只有一点填充 也许是10 15px 并且每个链接之间有一点点空间 也许 3 像素 但我似乎无法得到 text
  • 如何更改gridview所选项目的背景颜色?

    如何在 Asp net Web 应用程序中更改 gridview 所选项目的背景颜色 您可以在 GridView 标记下的 aspx 页面中执行此操作
  • React-router URL 在刷新或手动写入时不起作用

    我正在使用 React router 当我单击链接按钮时它工作正常 但是当我刷新网页时它不会加载我想要的内容 例如 我在localhost joblist一切都很好 因为我按链接到达这里 但if我刷新我得到的网页 Cannot GET jo
  • Node.js - 启动进程(firebase 模拟器)并读取其输出

    我想在 Jest 测试之前启动 firebase 模拟器 执行此操作 但以编程方式执行 E my projct gt firebase emulators start only firestore i emulators Starting
  • 字符串中的动态 t-sql 引号

    我在存储过程中有以下内容 DECLARE new column name varchar 9 DECLARE table name varchar 16 DECLARE SQLString nvarchar 2000 SET new col
  • 如何使用 Play 2.0 定义标签?

    关于 Play 2 0 模板引擎的文档并不多 如何使用 Scala 模板创建标签 play 2 0 中的模板引擎直接来自 play 1 0 scala 模块 如果您仍然想知道像 Scala 这样的函数式语言能带来什么好处 那么这肯定是它的亮