加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

playframework – 可以使用play framework 2来美化scala模板吗?

发布时间:2020-12-16 09:35:20 所属栏目:安全 来源:网络整理
导读:使用Play Framework 2我注意到渲染的Scala HTML模板不像缩进的@if或@for。 所以,例如,像这样的东西: ul @for(test - tests) { li@test.name/li }/ul 会有额外的不需要的空间。要解决它,我需要做这样的事情: ul@for(test - tests) { li@test.name/li}/ul
使用Play Framework 2我注意到渲染的Scala HTML模板不像缩进的@if或@for。

所以,例如,像这样的东西:

<ul>
   @for(test <- tests) {
      <li>@test.name</li>
   }
</ul>

会有额外的不需要的空间。要解决它,我需要做这样的事情:

<ul>
@for(test <- tests) {
   <li>@test.name</li>
}
</ul>

哪些会使其他@defining或其他语句变得混乱。

那么,是否有一种美化/美化Scala模板渲染的方法,以摆脱额外的空白处?

更新:

阅读this thread我注意到额外的空格和换行符也被添加,因为在模板顶部的参数。所以这:

@(myParam: String)


<!DOCTYPE html>
<html>
   <head></head>
   <body></body>
</html>

将在结果HTML之上添加3个额外的换行符。这是绝对烦人的。

线程似乎说,目前没有任何选择可以纠正。

解决方法

所以对于更多的细节我已经使用@biesor的答案,并通过这些步骤:

添加HtmlCompressor作为插件

在Build.scala中:

val appDependencies = Seq(
    "com.googlecode.htmlcompressor" % "htmlcompressor" % "1.5.2"
)

PrettyController

public class PrettyController extends Controller {

    public static Results.Status ok(Content content) {
        return Results.ok(prettify(content)).as("text/html; charset=utf-8");        
    }

    public static Results.Status badRequest(Content content) {
        return Results.badRequest(prettify(content)).as("text/html; charset=utf-8");        
    }

    public static Results.Status notFound(Content content) {
        return Results.notFound(prettify(content)).as("text/html; charset=utf-8");      
    }

    public static Results.Status forbidden(Content content) {
        return Results.forbidden(prettify(content)).as("text/html; charset=utf-8");     
    }

    public static Results.Status internalServerError(Content content) {
        return Results.internalServerError(prettify(content)).as("text/html; charset=utf-8");       
    }

    public static Results.Status unauthorized(Content content) {
        return Results.unauthorized(prettify(content)).as("text/html; charset=utf-8");      
    }

    private static String prettify(Content content) {
        HtmlCompressor compressor = new HtmlCompressor();
        String output = content.body().trim();

        if (Play.isDev()) {
            compressor.setPreserveLineBreaks(true);
        }

        output = compressor.compress(output);

        return output;
    }
}

那么每个控制器都应该扩展PrettyController。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读