在Grails项目的Service中,我喜欢在运行时找到动态方法的参数,以便通知调用者。
我会提供任何帮助。
发布于 2010-09-01 09:52:48
您可以在grails中配置URLMappings以获取动态方法的值并针对您的对象调用它,例如,您可以执行以下操作
“/$ action:"invoke")
将org.codehaus.groovy.grails.commons.ApplicationHolder作为AH类调用导入{ def org.codehaus.groovy.grails.commons.ApplicationHolder={ def if(domainClass.metaClass.getStaticMetaMethod(method,= params.method def ApiController = params.object def args if( object ) { def domainClass = AH.application.domainClasses.find{it.name == method}?.clazz ApiController args){def input.method,args) }
在我的示例中,我假设您在域类上调用静态动态查找器。您也可以将其泛化为处理实例方法。但是,您需要在请求中提供更多信息,如对象id,以加载对象并针对其调用方法。
"/$object/$id/$method" (controller:"api",action:"invoke")-Ken
发布于 2010-08-30 04:12:48
我不太明白你的问题,但最后一部分关于检查你是否可以调用对象上的方法,这可以通过检查你正在处理的对象的元类来完成,如下所示。
obj.metaClass.respondsTo(obj, 'theMethodYouWantToCall')obj是要对其调用方法的对象,theMethodYouWantToCall是要调用的方法的名称。如果找不到您尝试调用的方法,respondsTo将返回一个空的list []
https://stackoverflow.com/questions/3595534
复制相似问题