如果我有一个控制器方法的实例,通过在控件的Class对象上调用getMethod获得,为什么定义为带1参数的方法为“getParameterTypes”有一个空数组?
有没有办法真正获得它接受的参数类型?
答案 0 :(得分:3)
如果定义一个接受任何参数的控制器动作,Grails编译器会生成相应的无参数方法。
class MyController {
// you write an action like this...
def someAction(String name, Integer age) {
// your code here
}
// the Grails compiler generates this additional method...
def someAction() {
// do some stuff needed by the framework
// ...
// initialize parameters
def name = ...
def age = ...
// call the original method
someAction(name, age)
}
}
我希望您在Grails编译器生成的方法上调用getParameterTypes而不是原始方法。
答案 1 :(得分:0)
您的行动是关闭还是方法?如果它是一个闭包,我不希望它与反射API中的Method
类一起使用。我从我自己的一个控制器
class MyController {
def someAction(MyCommand command) {
}
}
并且它的行为符合预期
Method action = MyController.methods.find( it.name == 'someAction' }
assert [MyCommand] == action.parameterTypes as List