IT序号网

grails之Groovy元编程

52php 2026年09月08日 编程语言 204 0

在Grails服务的项目中,我想在运行时查找Dynamic Methods的参数以通知调用者。

另外,我喜欢调用该方法,如果不存在则返回错误,

我将不胜感激。

请您参考如下方法:

您可以在grails中配置URLMappings以获得动态方法的值并针对您的对象调用它,例如,您可以执行以下操作

  • 在您的urlMappings.groovy中定义一个带有两个嵌入式变量object和method的映射

    “/ $ object / $ method”( Controller :“api”,操作:“调用”)
  • 通过调用 Action 定义一个“api” Controller 。请参阅下面的代码,以及有关如何在对象上调用方法的逻辑
    import org.codehaus.groovy.grails.commons.ApplicationHolder as AH 
    class ApiController { 
        def invoke = { 
            def object = params.object 
            def method = params.method 
            def args 
            if(object) { 
                def domainClass = AH.application.domainClasses.find{it.name == method}?.clazz 
                if(domainClass.metaClass.getStaticMetaMethod(method,args)) { 
                    domainClass.metaClass.invokeStaticMethod(target,input.method,args)   
                } 
            } 
        } 
    } 
    

  • 在我的示例中,我假设您正在域类上调用静态动态查找器。您可以将其概括为也可以处理实例方法。但是,在加载对象并针对该对象调用方法的请求中,您需要提供更多信息,例如对象ID。
    "/$object/$id/$method" (controller:"api",action:"invoke") 
    

    -肯


    评论关闭
    IT序号网

    微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!