用例:我有一个路由处理主机上的所有请求:端口/p 路由如下所示:
GET /p/*path controllers.Application.p(path: String)
该p
方法获取一些数据并将其直接传递给视图p
:
return ok(p.render(currentSession));
在视图中,如果存在与我传递的数据中的字符串匹配的模板,我想导入一个模板。在这种情况下,字符串表示模型对象名称,例如“用户”,如果有匹配的模板,它将是views/custompages/User.scala.html
. 如果没有匹配的模板,我想使用一个通用的模板,例如views/generic.scala.html
.
我对这个问题有两个部分:
第 1 部分:我看到我可以通过执行以下操作来检查模板是否存在:
@if(custompages.User != null) {
<p>it exists!</p>
}
但如果我将其更改为custompages.Usera
(不存在的模板),我会收到编译错误(object Usera is not a member of package
)。怎么做这个检查?
第 2 部分:如何使用代表模型类的字符串进行检查?在第 1 部分的答案中将它连接到硬编码的“用户”的位置?
我会以错误的方式解决这个问题吗?我正在做的事情是否应该在控制器中使用反射来查找匹配的模板,然后呈现适当的模板?