2013-08-29 37 views
2

這些是我的控制器和命令。 現在我想獲得所有字段的名稱。 以下是獲取域級別 Get domain class field names的字段名稱的鏈接。 但我需要得到命令的字段名,因爲我解釋如下如何獲取grails命令對象的字段名?

class SocialRecruitingController 
{ 
def getFieldNames() 
{ 

ConnectionsAdvSearchCommand.fields.each 
{it-> 
    log.info(it?.name+","); 
// Expecting keyword,fname,lname,title,company,school,location,country,postalCode 
} 


} 

class ConnectionsAdvSearchCommand 
{ 
String keyword 

String fname; 
String lname; 
String title; 
String company; 
String school; 
String location; 
String country; 
String postalCode; 
} 
} 
+0

發現這幾乎可以肯定是一個壞主意。如果你可以用字段名稱和你正在使用的Grails版本來描述你正在做什麼,那麼可能有更好的方法來做到這一點,而不是下面的建議。 –

回答

4
ConnectionsAdvSearchCommand.declaredFields.each{ 
    if(!it.synthetic) println it.name 
} 

你也可以嘗試讓從ExpandoMetaClass的屬性,

ConnectionsAdvSearchCommand.metaClass.properties.each{ 
    if(it.field) println it.name 
} 

在這種情況下it.field忽略類財產從metaClass

的Grails 2.2.0

+0

喜@dmahapatro感謝您的回覆,之後執行代碼 ConnectionsAdvSearchCommand.declaredFields.each { 如果(it.synthetic!)的println 「 - >」 + it.name } 我得到了下面的輸出 - - >關鍵字 - > FNAME - > L-NAME - >標題 - >公司 - >學校 - >位置 - >國家 - > POSTALCODE - > instanceControllerTagLibraryApi - - > mimeTypesApi - > log - - > instanceConvertersControllersApi 輸出中幾乎沒有額外的字段,請嘗試給出更好的解決方案 – Ramesh

+0

@ user2729165您使用的是哪個版本的Grails? – dmahapatro

+0

@ user2729165看到我的更新,我希望有所幫助。 – dmahapatro

-1

的Grails:列出所有字段/中域/型號

在這個例子中的變量,我假設你的域對象的名字是「研究」和完整的包名是'com.package.name.Research'

方式1: Research.declaredFields.each {

if(!it.synthetic) 
     println it.name 
} 

方式2:

def names = grailsApplication.getDomainClass('com.package.name.Research').persistentProperties.collect { 
    println it.name 
} 

方式三:

def Research domainClass = grailsApplication.getGrailsDomainClass('Research') 
def persistentProperties = domainClass.getPersistentProperties() 
persisentProperties.each { property -> 
    println property 
} 

更多信息,可以在my blog

+0

我認爲這個問題是關於一個非域名類的。 –