如何获取grails命令对象的字段名?

时间:2013-08-29 14:43:02

标签: grails

这些是我的控制器和命令。 现在我想得到所有的字段名称。 以下是获取域类字段名称的链接 Get domain class field names。 但我需要获得Command的字段名称,我将在下面解释

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;
}
}

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:-1)

Grails:列出域/模型中的所有字段/变量

在此示例中,我假设您的域名类是' Research'并且完整的包名称是' 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 
}

方式3:

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

可以在my blog

找到更多信息