0

有一个 Grails 2.1 应用程序,我有一个标签库来为不同的控制器呈现摘要,我有一个指向正确视图文件夹的问题。

例如。TestAControllerTestBControllersummary.gsp在各自的视图文件夹中都有一个特定于控制器的视图文件。即/testa/summary.gsp/testb/summary.gsp

我如何才能让我的 taglib 呈现summary.gsp与当前正在运行的控制器相关的内容 - 我需要设置一个类似"??/summary-gsp".

我不想实现任何 if/else 逻辑,因为可能有 10000 个控制器使用这个 taglib,都指定自己的summary.gsp.

这是可行的吗?

4

2 回答 2

1

您可以访问 taglib 中的 params 对象,这样:

out << render(template: "/${params.controller}/summary")
于 2013-01-10T14:07:00.117 回答
0

调用者应该将模板的路径作为标签的参数传递。如果省略此参数,您可以使用约定来定位模板,例如

class MyTagLib {

  def renderSummary = {attrs ->

    def defaultTemplatePath = "/${params.controller}/summary"
    def templatePath = attrs.template ?: defaultTemplatePath
    out << g.render(template: templatePath)
  }
}
于 2013-01-10T15:25:59.447 回答