首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Twirl [PlayFramework]中导入文件的一部分

在Twirl [PlayFramework]中导入文件的一部分
EN

Stack Overflow用户
提问于 2018-05-03 08:53:38
回答 1查看 405关注 0票数 2

我使用PlayFramework和Twirl来使用swagger文件生成一些类。

我试图将一个大文件分割成小块,并使它更易于维护。但是,当呈现文件时,将忽略带有来自另一个文件的内容的标记:

bigFile.scala.txt:

代码语言:javascript
复制
@(otherFile: String) 
{
  { 
   "foo": "bar"
  },
  @otherFile
  {
   "one": "two"
  }
}

otherFile.scala.txt:

代码语言:javascript
复制
{
  {
   "a": "b"
  },
}

bigFile.template:

代码语言:javascript
复制
package com.telefonica.baikal.views.txt

import _root_.play.twirl.api.TwirlFeatureImports._
import _root_.play.twirl.api.TwirlHelperImports._
import _root_.play.twirl.api.Html
import _root_.play.twirl.api.JavaScript
import _root_.play.twirl.api.Txt
import _root_.play.twirl.api.Xml
import models._
import controllers._
import play.api.i18n._
import views.txt._
import play.api.templates.PlayMagic._
import play.api.mvc._
import play.api.data._

object bigFile extends _root_.play.twirl.api.BaseScalaTemplate[play.twirl.api.TxtFormat.Appendable,_root_.play.twirl.api.Format[play.twirl.api.TxtFormat.Appendable]](play.twirl.api.TxtFormat) with _root_.play.twirl.api.Template2[String,String,play.twirl.api.TxtFormat.Appendable] {

/**/
def apply/*1.2*/(otherFile: String):play.twirl.api.TxtFormat.Appendable = {
_display_ {
  {


Seq[Any](format.raw/*1.21*/("""
"""),format.raw/*2.1*/("""{"""),format.raw/*2.2*/("""
"""),format.raw/*3.3*/("""{"""),format.raw/*3.4*/("""
"""),format.raw/*4.5*/(""""foo": "bar"
"""),format.raw/*5.3*/("""}"""),format.raw/*5.4*/(""",
"""),_display_(/*6.4*/otherFile),format.raw/*6.13*/("""
"""),format.raw/*7.3*/("""{"""),format.raw/*7.4*/("""
"""),format.raw/*8.5*/(""""one": "two"
"""),format.raw/*9.3*/("""}"""),format.raw/*9.4*/("""
"""),format.raw/*10.1*/("""}"""),format.raw/*10.2*/("""
"""))
  }
 }
}

渲染档案:

代码语言:javascript
复制
{
  { 
   "foo": "bar"
  },
  {
   "one": "two"
  }
}

有主意把其他文件渲染成大文件吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-09 09:19:07

bigFile.scala.txt的几个问题

  • 参数otherFile是一个用相同名称对模板进行阴影的字符串。
  • 若要将模板包含到另一个模板中,请使用括号。如果您包含了括号,并且没有重命名输入参数,那么它可能不会编译。

所以总结一下,试试这样的东西,bigFile.scala.txt

代码语言:javascript
复制
@(otherFile2: String)
{
    {
        "foo": "bar"
    },
    @otherFile2,
    @otherFile(),
    {
        "one": "two"
    }
}

在你的控制器的某个地方:

代码语言:javascript
复制
def serveBigFile() = Action { request =>
  Ok(views.txt.bigFile("""{"x": "y"}"""))
}

结果应该是:

代码语言:javascript
复制
{
    {
        "foo": "bar"
    },
    {"x": "y"},
    {
        {
            "a": "b"
        },
    },
    {
        "one": "two"
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50150838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档