在 Twirl [PlayFramework] 中导入部分文件
Import part of a file in Twirl [PlayFramework]
我正在使用 PlayFramework 和 Twirl 生成一些 类 使用 swagger 文件。
我正在尝试将大文件拆分成小块并使其更易于维护。但是当文件被呈现时,带有来自另一个文件的内容的标签被忽略:
bigFile.scala.txt:
@(otherFile: String)
{
{
"foo": "bar"
},
@otherFile
{
"one": "two"
}
}
otherFile.scala.txt:
{
{
"a": "b"
},
}
bigFile.template:
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*/("""
"""))
}
}
}
渲染文件:
{
{
"foo": "bar"
},
{
"one": "two"
}
}
是否想将其他文件渲染到大文件中?
bigFile.scala.txt
的几个问题:
- 参数
otherFile
是一个字符串,用于隐藏同名模板。
- 要将一个模板包含到另一个模板中,请使用方括号。如果您包含括号并且没有重命名输入参数,它可能无法编译。
所以总而言之,尝试这样的事情,
bigFile.scala.txt
:
@(otherFile2: String)
{
{
"foo": "bar"
},
@otherFile2,
@otherFile(),
{
"one": "two"
}
}
控制器中的某处:
def serveBigFile() = Action { request =>
Ok(views.txt.bigFile("""{"x": "y"}"""))
}
结果应如下所示:
{
{
"foo": "bar"
},
{"x": "y"},
{
{
"a": "b"
},
},
{
"one": "two"
}
}
我正在使用 PlayFramework 和 Twirl 生成一些 类 使用 swagger 文件。
我正在尝试将大文件拆分成小块并使其更易于维护。但是当文件被呈现时,带有来自另一个文件的内容的标签被忽略:
bigFile.scala.txt:
@(otherFile: String)
{
{
"foo": "bar"
},
@otherFile
{
"one": "two"
}
}
otherFile.scala.txt:
{
{
"a": "b"
},
}
bigFile.template:
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*/("""
"""))
}
}
}
渲染文件:
{
{
"foo": "bar"
},
{
"one": "two"
}
}
是否想将其他文件渲染到大文件中?
bigFile.scala.txt
的几个问题:
- 参数
otherFile
是一个字符串,用于隐藏同名模板。 - 要将一个模板包含到另一个模板中,请使用方括号。如果您包含括号并且没有重命名输入参数,它可能无法编译。
所以总而言之,尝试这样的事情,
bigFile.scala.txt
:
@(otherFile2: String)
{
{
"foo": "bar"
},
@otherFile2,
@otherFile(),
{
"one": "two"
}
}
控制器中的某处:
def serveBigFile() = Action { request =>
Ok(views.txt.bigFile("""{"x": "y"}"""))
}
结果应如下所示:
{
{
"foo": "bar"
},
{"x": "y"},
{
{
"a": "b"
},
},
{
"one": "two"
}
}