我想通过以下的Play documentation做一个自定义模板格式(播放2.5_ & _Scala 2.11.11),但我在这里这样就意味着它不是为我工作。在播放创建自定义的模板格式2.5
我希望新的模板有“流”文件扩展名(如this video现在是几岁),所以我创造了这个文件作为文档建议:
package ui
import akka.NotUsed
import akka.stream.scaladsl.{Source}
import play.twirl.api._
import scala.collection.immutable
case class HtmlStream(source: Source[Html, NotUsed]) extends Appendable[HtmlStream] {
def +=(other: HtmlStream): HtmlStream = andThen(other)
def andThen(other: HtmlStream): HtmlStream = HtmlStream(source.merge(other.source))
}
object HtmlStream {
def apply(text: String): HtmlStream = apply(Html(text))
def apply(html: Html): HtmlStream = HtmlStream(Source.single(html))
}
object HtmlStreamFormat extends Format[HtmlStream] {
def raw(text: String): HtmlStream = HtmlStream(text)
def escape(text: String): HtmlStream = raw(HtmlFormat.escape(text).body)
override def empty: HtmlStream = ???
override def fill(elements: immutable.Seq[HtmlStream]): HtmlStream = ???
}
而且已将此添加到build.sbt文件:
TwirlKeys.templateFormats += ("stream" -> "ui.HtmlStreamFormat.instance")
我看不出哪里或如何包括以下隐(上预提到Play documentation - 底部);这可能是问题:
Play可以写一个HTTP响应体用于哪 它存在的隐式play.api.http.Writeable [A]值A型的任何值。所以你需要的是为你的模板结果类型定义一个这样的值。对于 例如,下面是如何为HTTP定义这样的值:
implicit def writableHttp(implicit codec: Codec): Writeable[Http] =
Writeable[Http](result => codec.encode(result.body), Some(ContentTypes.HTTP))
当我尝试创建一个新的文件view
,例如称为test.scala.stream
它不能识别它应该是什么类型,所以它看起来有些绝对是错误的。帮助需要这个!