3、play中的模板引擎

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格式相关联:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/321505.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jzoj3500-物语【最短路】

正题 题目链接:https://jzoj.net/senior/#contest/show/3005/0 题目大意 nnn个点mmm条边的无向图&#xff0c;有一条边的边权会变化&#xff0c;qqq次变化&#xff0c;每次询问最短路。 解题思路 可变边(x,y)(x,y)(x,y) 路径无非就三种 1−>n1->n1−>n1−>x−>…

Problem G. Graph 2015-2016 acmicpc neerc 拓扑排序模拟

一道好题 题目详见题目连接G graph 显然模拟拓扑排序的步骤是必不可少了。 假设我们当前有t个点&#xff0c;他们的入度均为0.我们不知道该选取哪一个。 我们把这t个点按从小到大排好序&#xff08;放入小顶堆&#xff09;&#xff0c;假设我们目前有k条边&#xff08;k &l…

【动态规划】石子合并

石子合并石子合并石子合并 Description 在一个操场上一排地摆放着N堆石子。现要将石子有次序地合并成一堆。规定每次只能选相邻的2堆石子合并成新的一堆&#xff0c;并将新的一堆石子数记为该次合并的得分。请设计一个程序&#xff0c;计算出将N堆石子合并成一堆的最小得分。…

.NET Core调用WCF的最佳实践

现在.NET Core貌似很火&#xff0c;与其他.NET开发者交流不说上几句.NET Core都感觉自己落伍了一样。但是冷静背后我们要也看到.NET Core目前还有太多不足&#xff0c;别的不多说&#xff0c;与自家的服务框架WCF集成起来就不咋地&#xff0c;从最初不支持&#xff0c;到现在有…

4、表单提交和验证

1、启用/禁用表单module sbt启动应用时默认就启用了表单&#xff0c;也可以在build.sbt中添加启用libraryDependencies javaForms&#xff0c;想要移除表单时使用PlayMinimalJava 插件 2、play接收表单数据 play.data中的类可用于处理HTTP表单数据提交和验证&#xff0c;操…

Boring Homework 二叉搜索树的打印,模拟

写了好长时间&#xff0c;注意递归的使用&#xff0c;思路一定要清晰。 还有注意的地方&#xff1a;打印的时候一定要先打印到缓存buffer中&#xff0c;然后再输出到屏幕上面。 #include <bits/stdc.h> using namespace std; int idx 0; int val[100],lft[100],rgt[100…

jzoj3501-消息传递【换根法,树形dp】

正题 题目链接:https://jzoj.net/senior/#contest/show/3005/1 题目大意 一棵树&#xff0c;一个信息开始给一个人&#xff0c;每次得到信息的人可以选择相邻节点中的一个传递&#xff0c;求最短多久可以传到所有人。 解题思路 我们先考虑如何求一根的答案&#xff0c;farif…

【贪心】最佳浏览路线问题

最佳浏览路线问题最佳浏览路线问题最佳浏览路线问题 题目描述 某旅游区的街道成网格状&#xff08;见图&#xff09;&#xff0c;其中东西向的街道都是旅游街&#xff0c;南北向的街道都是林荫道。由于游客众多&#xff0c;旅游街被规定为单行道。游客在旅游街上只能从西向东…

Ooui:在浏览器中运行.NET应用

在过去数年中&#xff0c;桌面应用开发人员一直处境艰难&#xff0c;因为人们的主要关注点聚焦于Web和移动应用。由于Microsoft未来Windows平台的计划未定&#xff0c;并且UWP应用也没有突破性进展&#xff0c;因此技术落伍的责任也不应由.NET开发人员来承担。当前迫切需要解决…

5、play中的json数据处理

1、play中的json库 Play使用Jackson JSON库将对象转换为JSON和JSON之间的对象。play的操作使用JsonNode类型&#xff0c;play.libs.json包中有操作json数据的方法 2、java对象和json数据 将java对象转成play中的JsonNode类型&#xff1a; 将JsonNode格式的数据解析到java对象…

P2354,jzoj3757-[NOI2014]随机数生成器【贪心,暴力】

正题 题目链接:https://www.luogu.com.cn/problem/P2354 解题思路 以1∼n∗m1\sim n*m1∼n∗m的数字组成的n∗mn*mn∗m的矩阵&#xff0c;求一条路径使得路径上的数排序后字典序最小。 解题思路 考虑从小到大依次枚举来判断是否可行。 每次判断一个点是否可以经过然后加入一…

Detection of Extraterrestrial KMP匹配 重复k次子串 好题

一开始以为这道题是后缀数组&#xff0c;想了好久没想明白怎么做&#xff0c;后来发现暴力枚举起点&#xff0c;进行KMP就好了。 枚举起点以后&#xff0c;构建fail数组。 遍历fail数组&#xff0c;如果串s[l,r]是由串s[s,t]重复k次得到的&#xff0c;那么fail数组的样子一定…

【贪心】最大连续数列的和

最大连续数列的和最大连续数列的和最大连续数列的和 题目描述 求最大连续子序列的和 输入 第一行输入n(n<500),第二行为n个以空格分开的整数(-1000到1000之间) 输出 该序列中最大的连续子序列的和 输入样例 &#xff16; 1 2 -5 6 7 8 输出样例 21 解题思路 用…

农行基于TFS工具的敏捷转型实践

““春天工程”项目组是应用开发二部最早采用敏捷模式的项目组&#xff0c;项目组在项目推进过程中使用Scrum框架&#xff0c;结合“看板站会”形式&#xff0c;积极探索项目推进新措施。结合TFS工具逐步实现了电子工具与物理看板的有机融合&#xff0c;并在过程管理、版本管理…

6、XML数据处理

1、处理xml请求 两种方式&#xff0c;一是直接将请求体数据转成Document对象&#xff1a; 二是定义自己的解析格式将请求体进行解析&#xff1a; 2、返回xml格式数据响应 设置响应头格式为application/xml类型

.NET Core:新的快速开发平台

.NET Core 今年已经发布了 2.0 版本了。技术雷达最近将 .NET Core 从“评估”移到了“试用”阶段&#xff0c;意味着运用这项技术的风险在不断减小。本文将简要介绍基于 .NET Core 的快速开发的方式。.NET Core 产生于 2014年&#xff0c;是一个不折不扣的新开发平台。SmallTal…

Juice Extractor dp

题意&#xff1a; 水果忍者游戏&#xff0c;给出N个水果的出现时间和消失时间。 每次切可以清除该时刻中屏幕上的所有水果&#xff0c;只有combo>3的时候才得分&#xff0c;得分为combo的值。 题解&#xff1a; 可以把每个水果看成是一段时间区间。 然后把这些区间按照…

【动态规划】公共子串

公共子串公共子串公共子串 Description 设有A、B两个字符串&#xff0c;找出A、B共同子串&#xff0c;每个字符串无相同字符&#xff0c;可以不连续&#xff0c;但顺序不能颠倒。 Input 第一行字符串A 第二行字符串&#xff22; Output 最长公共子串的长度. Sample Inp…

P1117-[NOI2016]优秀的拆分【SA】

正题 题目链接:https://www.luogu.com.cn/problem/P1117 题目大意 长度为nnn的字符串&#xff0c;求所有子串有多少种分割成AABBAABBAABB的方式。 解题思路 aia_iai​表示以iii结尾的子串中有多少种分割成AAAAAA的方式 bib_ibi​表示以iii开头的子串中有多少种分割成AAAAAA的…

7、play中的文件上传

1、基本的文件上传处理 将form的类型设置成multipart/form-data&#xff0c;请求的方式必须是POST类型&#xff0c;实例如下&#xff1a; 请求发到controller&#xff0c;controller中处理&#xff1a; public Result upload() {MultipartFormData<TemporaryFile> bod…