gpt4 book ai didi

model-view-controller - 添加方法在所有 View 中可用

转载 作者:行者123 更新时间:2023-12-02 14:56:53 24 4
gpt4 key购买 nike

我想为我的应用程序中的所有 View 提供一种方法。

我希望能够像这样调用电话:

<span>${ getDynamicText() }</span>

(对我来说)最明显的实现方法是:
  • 调用 Controller 中的方法并将其传递给 View 。
  • 在某个 Util 类上将方法设为静态并从代码 ${ UtilClass.getDynamicText() } 中调用它
  • 使用元编程以某种方式使该方法可用于所有 View 。

  • #3 的好处是只需在一个地方进行更改。 #1 必须在每个 Controller Action 中进行;并且#2 需要在每个想要使用该方法的 View 页面上进行导入。

    那么有没有办法添加一个可用于我的应用程序中所有 View 的方法?

    我不得不承认,我不太了解 .gsp 文件是如何在幕后处理的,所以它们可能没有相应的类,因此无法以这种方式进行操作。好的文章/文档的链接将获得额外的好业力。

    最佳答案

    GSP 被编译成扩展 org.codehaus.groovy.grails.web.pages.GroovyPage 的类。 ,因此您可以向该元类添加方法,并且它们将可供所有 GSP 使用。最好的地方是 BootStrap.groovy (或在插件的 doWithDynamicMethods 闭包中):

    import org.codehaus.groovy.grails.web.pages.GroovyPage

    class BootStrap {

    def init = { servletContext ->
    GroovyPage.metaClass.getDynamicText = { ... }
    }
    }

    关于model-view-controller - 添加方法在所有 View 中可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9730449/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com