play-framework:无法在另一个视图中调用视图(函数)(找不到@content)

时间:2015-02-25 08:57:23

标签: function templates view playframework

我在将视图调用到另一个视图时遇到问题......似乎我无法理解事情的运作方式...... 所以我有这个观点(NewArea.scala.html):

@(content: Html)(k:String)
@Main("Add new Area") {    

<nav class="navbar navbar-default">
    ....
 <li><a href="@routes.Application.newarea(k)">New Area </a></li>
    ...
</nav>

<div class="col-md-offset-1 col-md-4">    
    @content
</div>

}
  

击溃:

GET     /newarea                controllers.Application.newarea(id:String)
  

控制器:

 public static Result newarea(String id){
        return ok(newarea.render(id));
    }

@content,我想成为这个观点(newarea.scala.html):

@(k:String)

@NewArea("") {

<form action="@routes.Application.PostNewArea(k)" method="POST">

   Area name :  <input name="name">     
   <input type="submit">

</form>
}

我收到此错误:

  

未找到:值内容
@(内容:Html)(k:字符串)

Main(Main.scala.html)模板看起来像这样,如果它有帮助:

@(title: String)(content: Html)

<!DOCTYPE html>

<html>
    <head>
        <title>@title</title>
    </head>
    <body>
        @content
    </body>
</html>

在这个例子中,有人可以解释一下如何正确行事吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

更改

@(content: Html)(k:String)

@(k:String)(content: Html)

NewArea.scala.html

Scala模板就像一个函数。当你定义NewArea.scala.html时,你说 NewArea接受类型为Html,String的参数但是当你调用它时,你传递的是String,Html的顺序不一样,所以它给出了一个错误。

Play Docs