0

さまざまなコントローラーの概要をレンダリングするためのタグライブラリがあるGrails2.1アプリケーションを使用していると、正しいビューフォルダーを指す問題が発生します。

例えば。TestAControllerTestBControllersummary.gspはどちらも、それぞれのビューフォルダーで呼び出されるコントローラー固有のビューファイルを持っています。つまり/testa/summary.gsp/testb/summary.gsp

taglibで、現在動作中のコントローラーに関連するをレンダリングするにはどうすればよいですか?のsummary.gspようなパスを設定する必要があります"??/summary-gsp"

このtaglibを使用して10000のコントローラーが存在する可能性があり、すべてが独自のを指定している可能性があるため、if/elseロジックを実装したくありません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 に答える