【问题标题】:Determining parent page of template确定模板的父页面
【发布时间】:2014-08-15 00:17:23
【问题描述】:

在 Grails GSP 模板(例如,_form.gsp)中,我如何确定哪个页面正在调用模板(例如,create.gspedit.gsp)以便显示不同的字段?

【问题讨论】:

    标签: templates grails gsp


    【解决方案1】:

    没有通用的方法,没有。如果您只知道在您的应用程序中foo 操作始终呈现foo 视图并且没有例外,那么您当然可以只查看操作名称。你也可以做一些简单的事情,比如在渲染模板时在模型中放入一些东西,比如<g:render template="foo" model="[parentPage:'edit']"/>,或者在 pageScope 或类似的地方设置一个变量。有一些方法可以完成您想要的,但没有一般的方法可以在模板中回答“什么 GSP 呈现了这个模板?”这个问题。我希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      所以我在没有提及模板的情况下搜索了它 (gsp determine current page),并在 this Nabble thread 上找到了答案。我将使用params.action 来确定我当前正在执行的操作(例如,创建或编辑),并使用它来显示不同的字段。

      干杯!

      【讨论】:

      • 当然,这在一定程度上取决于您的模板的使用/渲染方式。如果您使用 g:include 并通过控制器调用动作来呈现所述模板,那么该动作将是对控制器的调用。但是,在这种情况下,您始终可以将参数传递给调用,通过传递值的 params.action 来指示调用它的位置。
      • params.action 不会告诉您哪个页面呈现了模板。它告诉您调用了哪些控制器操作。有很多原因可能不一样。
      • 也许知道该动作可能适合这个问题,如果这是真的,您也可以通过这种方式访问​​当前动作名称 ${actionName}。
      • @JeffScottBrown,有没有办法确定页面呢?
      • 没有通用的方法,没有。如果您只知道在您的应用程序中foo 操作始终呈现foo 视图并且没有例外,那么您当然可以只查看操作名称。你也可以做一些简单的事情,比如在渲染模板时在模型中放一些东西,比如<g:render template="foo" model="[parentPage:'edit']"/>,或者在 pageScope 或类似的地方设置一个变量。有一些方法可以完成你想要的,但没有通用的方法在模板中回答“什么 GSP 呈现了这个模板?”这个问题。我希望这会有所帮助。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多