1、模板格式

Play默认的模板引擎是一种基于scala的安全模板引擎,尽管模板引擎使用Scala作为表达式语言,但是非常简单易学。参数类型使用后缀语法指定(例如: id:Long),泛型类型是使用[]符号(例如: list:java.util.List[String])。另外就是所有的错误信息可以在页面上直接显示。

模板文件的命名规则是*.scala.html,模板按着简单的命名将页面编译成scala函数,如果创建了一个index.scala.html模板文件,则会生成一个具有render()方法的index类,就像jsp最终会被编译成一个java文件一样。

模板的基本使用:

1、模板中使用@符号来表示动态数据开始

2、使用传递的相应数据时需要先声明

3、循环

4、判断

5、重用代码声明

模板中可以使用java类中的方法,方法是static的

布局模板

https://www.playframework.com/documentation/2.7.x/JavaTemplateUseCases

2、带有模板的依赖项注入

在模板顶部使用 @this(args) 语法声明构造函数,可以将twirl模板生成为类而不是静态对象。这意味着twirl模板可以直接注入到控制器中,并且可以管理它们自己的依赖项。例如:模板需要依赖Summarizer

声明模板,使用@this注册构造函数,依赖注入Summarizer

使用

3、通用模板用例

在twirl模板中,模板是简单的函数,可以以任何方式组合。

先介绍一下布局:

主布局模板的视图main.scala.html模板:

@(title: String)(content: Html)
<!DOCTYPE html>
<html><head><title>@title</title></head><body><section class="content">@content</section></body>
</html>

使用:

@main(title = "Home") {<h1>Home page</h1>}

接下来介绍一下标签的使用:

创建标签:views/tags/notice.scala.html,这个标签接收一个string类型值,然后根据值返回对应的html信息

使用标签level

说一下包含,在一个模板中可以随意引用其他模板,路径要正确:

4、在模板引擎中添加对自定义格式的支持

添加自定义格式的支持需要注意两个地方:

1、对格式执行文本集成过程

2、将文件扩展名与格式关联。

那么如何具体实现呢?先说一下实现的基本原理。

首先需要实现play.twirl.api.format<T>接口,该接口具有两个方法T raw(String text)和T escape(String text),分别用于集成静态和动态模板部件。其中T类型必须是play.twirl.api.appendable<T>特性的子类型,该特性定义如何将部件连接在一起,play提供了一个play.twirl.api.bufferedContent<T>抽象类,该类使用StringBuilder生成其结果,并实现play.twirl.api.content接口,因此play知道如何将其序列化为HTTP响应体。

说一下具体的开发实现。

需要先写一个自定义格式类,此类继承BufferedContent<T>抽象类,之后写一个转换类,用来定义文本的集成过程,此类实现play.twirl.api.format接口。下边举一个例子:

文本集成过程定义好之后,需要将文件扩展名与格式进行关联。在编译整个应用程序源文件之前,构建过程会将模板编译成.scala文件。TwirlKeys.templateFormats是定义文件扩展名和模板格式之间映射的类型的sbt设置。例如,如果要play使用自定义的HTML格式实现,则必须在build.sbt文件中写入以下内容,以便将.scala.html文件与自定义的my.HtmlFormat格式相关联:

3、play中的模板引擎相关推荐

  1. Node 03--在Node中使用模板引擎进行渲染

    使用readdir获取指定路径下的所有文件名 文件结构 实现代码 const fs = require('fs');fs.readdir('G:/pink_code/Node_Study/02',(e ...

  2. ThinkPHP6 模板引擎普通标签中,模板引擎运算符函数,循环标签,判断标签的使用,及一些特殊标签

    ThinkPHP6 模板引擎普通标签中,模板引擎运算符函数,循环标签,判断标签的使用,及一些特殊标签 模板引擎支持普通标签和XML标签方式两种标签定义,分别用于不同的目的: 标签类型 描述 普通标签 ...

  3. 六十四、SpringBoot中的模板引擎Thymeleaf

    @Author:Runsen 来源:尚硅谷 下面建议读者学习尚硅谷的B站的SpringBoot视频,我是学雷丰阳视频入门的. 具体链接如下:B站尚硅谷SpringBoot教程 文章目录 使用Sprin ...

  4. Spring Boot中使用模板引擎引用资源

    目录 概念 演示 概念 在Spring Boot中可以通过模板引擎去引用资源,如果项目改变了,也是可以跑的,不需要自己手动一个个去改链接. 演示 运行截图如下: 但修改properties文件: se ...

  5. 【ST4】Java 中的模板引擎 StringTemplate

    1.概述 StringTemplate是一种基于java的模板引擎库,类似于velocity,FreeMarker.可以用于生成源代码.web页面.电子邮件等多种样式的文本.选择StringTempl ...

  6. JavaScript中template模板引擎

    这篇文章主要为大家详细介绍了JavaScript模板引擎Template.js使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 template.js 一款 JavaScript 模板引擎, ...

  7. tal php x 1,PHP中TAL模板引擎语法的解析(代码)

    这篇文章给大家介绍的内容是关于php TAL模板引擎语法,内容很详细,有需要的朋友可以参考一下,希望可以帮助到大家. PHP 数据 本文档的使用到的数据($talData)//定义talData变量 ...

  8. Layui 数据表格toolbar中使用模板引擎templet,当前系统时间比较问题

    在layui数据表格展现中,使用toolbar,由于权限的控制,需要使用templet模板引擎语法进行控制,控制逻辑为只有大于当前时间的记录才能撤销. 效果图如下:(当前时间为2018-06-06) ...

  9. 在Apache案例中加入模板引擎

    效果图 1.js文件 var http=require('http') var fs=require('fs') var template=require('art-template') var se ...

最新文章

  1. php 页面生成外部链接,php 获取网页外部链接正则表达式
  2. jsr223 java_JSR223 Java使用脚本引擎动态修改业务逻辑
  3. python 创建txt文件并写入字符串-python创建txt文件
  4. 创建一个水平盒子java_你了解如何比较两个对象吗
  5. 后悔!我早该把这1W字详解的 InnoDB 原理给你!
  6. java 调用一个抛出异常的函数,Java VS C++(14) 调用可能抛出异常的函数
  7. 数据结构实验之排序七:选课名单
  8. SIGIR2020 | 淘宝提出结合知识图谱与大规模推荐的新框架ATBRG
  9. 根据前序和中序 构造二叉树
  10. 基于DotNetNuke的动态窗体支持(一)
  11. React-Native 仿喜马拉雅APP项目笔记(多环境配置 项目配置路径 堆栈式导航)
  12. android 平面图app_安卓app设计规范整理和Android APP设计篇
  13. 虚无世界java路_[AoA3]虚无世界3 (Advent of Ascension 3)
  14. 计算机资源管理器总是未响应,资源管理器总是无响应,而且开机很慢老是解决不了问题...
  15. ESP32创建局域网服务器VScode
  16. 熊猫人表情包python 代码_Python实现表情包的代码实例
  17. 英语日常口语对话(2)
  18. 计算机网络 方面应用研究,计算机网络技术应用研究
  19. CSS之iconfont导入方式
  20. 采集google搜索引擎的10个经典方法

热门文章

  1. python 3.9特性_Python 3.9来了!这十个新特性值得关注
  2. python变量类型怎么决定的_Python数据类型提示痛点的解决方案探讨
  3. [Java基础]反射获取构造方法并使用
  4. [蓝桥杯][算法提高VIP]数组替换-模拟
  5. 数据结构---递归实现十进制装换为任意进制
  6. 简历中能熟练使用计算机怎么写,过了计算机二级,可以在简历里写“熟练掌握Excel”吗?...
  7. undefined reference to Mat_VarCreate'
  8. Codeforces Round #630 (Div. 2) F. Independent Set 树形dp
  9. ARC078F - Mole and Abandoned Mine(状压DP)
  10. CF1156F. Card Bag