Play 2.0模板 - 使用字符串然后将其呈现为HTML

non*_*com 0 scala playframework-2.0

在Play 2.0中,使用Scala,我想创建一个带有html片段并将每一行放入<div>块中的工厂.我已经尝试了几种我能想到的方法,但它总是出现在String/Html的类型错误或者在页面上写入html代码,就好像它是文本一样.有谁知道如何做到这一点?

更新:

我希望看到的是这样的:

@factories.f_div_lines {
   <a href="/aabbcc"> abc </a>
   <a href="/ccbbdd"> cbd </a>
   <a href="/bbddee"> bde </a>
   <a href="/ddeeff"> def </a>
   <a href="/eeffgg"> efg </a>
}
Run Code Online (Sandbox Code Playgroud)

并且所有<a href>标签都被<div>'s 包围

Raf*_*ele 9

如果你想在不同的divs 上拆分多行字符串,那么写一个这样的模板:

@(message: String)

@for(line <- message.lines) {
  <div>@line</div>
}
Run Code Online (Sandbox Code Playgroud)

播放会自动转义HTML内容,因此如果您message包含任何内容,则必须通过调用Html(例如在循环内)禁用转义

<div>@Html(line)</div>
Run Code Online (Sandbox Code Playgroud)

并以这种方式调用它:

Ok(views.html.index("First\nSecond\nThird"))
Run Code Online (Sandbox Code Playgroud)

请参阅迭代部分的播放指南

更新 以下代码定义split_lines_in_divs哪个接受Html参数,将其转换为String对象并应用与上面相同的代码.请注意,我使用了main由Play自动生成的Play功能!当您创建新的Scala项目以提供常见的HTML部分时

@(message: String)

@split_lines_in_divs(the_html: Html) = {
  @for(line <- the_html.toString().lines) {
    <div>@Html(line)</div>
  }
}

@main("The title"){ 

  @split_lines_in_divs {
    <a href="test">Test</a>
    <a href="test2">Test2</a>
  }
}
Run Code Online (Sandbox Code Playgroud)