升级至Play 2.6后复用模板失效问题求助
解决Play 2.6复用模板找不到
main的问题 嘿,这个问题我升级Play版本的时候也踩过坑!核心原因是你main模板的参数定义不符合Play 2.6的模板语法要求,具体来说是没用到柯里化的参数列表来接收HTML代码块。
问题根源
你当前的main.scala.html把所有参数塞进了同一个括号里:
@(title: String, stuff: HTML)
但Play模板中,要接收后续{ ... }里的代码块,必须把HTML内容参数单独放在第二个参数列表里——也就是用柯里化的写法,这是Play 2.5+版本复用模板的硬性要求。
修复步骤
- 修正main模板的参数定义
把main.scala.html的开头改成这样:
@(title: String)(stuff: Html) <!-- 以下是你的页面结构代码 --> <!DOCTYPE html> <html> <head> <title>@title</title> </head> <body> <!-- 插入子模板的内容 --> @stuff </body> </html>
注意两个细节:
- 参数拆成了两个独立的括号
(title: String)(stuff: Html) - 类型用
Html(Play官方模板API的标准类型,注意大小写)
- 验证index模板的调用写法
你的index.scala.html写法完全没问题,不需要修改:
@(word: String) @main("My index Page"){ <p>@word</p> }
补充说明
如果你的main模板需要更多参数(比如额外的CSS路径、页面元数据),可以扩展第一个参数列表,比如:
@(title: String, cssPath: String)(stuff: Html)
调用时就写成:
@main("My index Page", "/assets/styles/main.css"){ <p>@word</p> }
内容的提问来源于stack exchange,提问作者bharal
相关产品推荐
相关产品推荐

