2
我需要在運行時從任何項目中的所有控制器列出所有方法及其參數。 我還沒有找到一個方法或檢索參數的例子。例如在方法中:獲取方法的參數
def login(String username, String password) {
...
}
我需要參數username和password與他們的類型。
非常感謝您的幫助。
我需要在運行時從任何項目中的所有控制器列出所有方法及其參數。 我還沒有找到一個方法或檢索參數的例子。例如在方法中:獲取方法的參數
def login(String username, String password) {
...
}
我需要參數username和password與他們的類型。
非常感謝您的幫助。
在編譯期間,AST轉換爲帶有參數的操作方法添加了一個空方法。這用grails.web.Action
註釋進行了註釋,該註釋的commandObjects
屬性包含一個Class[]
命令對象類和常規方法參數類型的數組。
所以,你可以遍歷所有應用程序的控制器,並找到所有註解的方法:
import grails.web.Action
for (cc in grailsApplication.controllerClasses) {
for (m in cc.clazz.methods) {
def ann = m.getAnnotation(Action)
if (ann) {
String controller = cc.logicalPropertyName
String action = m.name
Class[] argTypes = ann.commandObjects()
println "${controller}.$action(${argTypes*.name.join(', ')})"
}
}
}
感謝。優秀的解決方是否有可能也有參數的名稱和類型?使用這個例子來得到:(username String,password String)? – ncaramolegos
如果使用調試信息編譯類,則應該可以使用該信息。我嘗試使用'org.springframework.core.LocalVariableTableParameterNameDiscoverer',但沒有找到名稱。你應該看看這個:http://stackoverflow.com/questions/2729580/how-to-get-the-parameter-names-of-an-objects-constructors-reflection/2729907#2729907 –