有一个Grails 2.1应用程序,我有一个taglibrary用于呈现不同控制器的摘要,我有一个指向正确视图文件夹的问题。
EG。 TestAController 和 TestBController 都在其各自的视图文件夹中都有一个名为summary.gsp
的控制器特定视图文件。那是/testa/summary.gsp
和/testb/summary.gsp
。
我的taglib如何呈现与当前操作的控制器相关的summary.gsp
- 我需要设置类似"??/summary-gsp"
的路径。
我不想实现任何if / else逻辑,因为可能有10000个控制器使用这个taglib,所有控制器都指定了自己的summary.gsp
。
这可行吗?
答案 0 :(得分:1)
您可以访问taglib中的params对象,以便:
out << render(template: "/${params.controller}/summary")
答案 1 :(得分:0)
调用者应该将模板的路径作为标记的参数传递。如果省略此参数,则可以使用约定来定位模板,例如
class MyTagLib {
def renderSummary = {attrs ->
def defaultTemplatePath = "/${params.controller}/summary"
def templatePath = attrs.template ?: defaultTemplatePath
out << g.render(template: templatePath)
}
}