Получить имена полей класса домена
Я хотел бы получить имена полей класса и, возможно, сохранить его в списке. Кто-нибудь может помочь? Благодарю.
4 ответа
Вы можете попробовать это, чтобы получить имена полей класса домена.
YourClass.declaredFields.each {
if (!it.synthetic) {
println it.name
}
}
Вы можете использовать gormPersistentEntity для любого объекта домена, это работает как минимум с Grails 2.4.4:
def names = Person.gormPersistentEntity.persistentPropertyNames
//returns ['firstName', 'lastName'...]
Вы также можете получить естественное имя, используя GrailsNameUtils, например так:
def naturalNames = Person.gormPersistentEntity.persistentPropertyNames.collect {
grails.util.GrailsNameUtils.getNaturalName(it)
}
//returns ['First Name', 'Last Name'...]
def capitilizedNames = Person.gormPersistentEntity.persistentProperties.collect{
it.capitilizedName
}
//returns ['FirstName', 'LastName'...]
Только что выяснил, это работает:
def names = grailsApplication.getDomainClass('com.foo.Person').persistentProperties.collect { it.name }
Вы можете перебирать поля такого класса.
YourClass.fields.each { println it.name }
Если вам нужно поместить их в список, вы можете использовать collect() или заполнить его внутри каждого.