Grails相对于控制器视图文件夹的路径

时间:2013-01-10 14:02:12

标签: grails taglib

有一个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

这可行吗?

2 个答案:

答案 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)
  }
}