Я пишу тег, который, по сути, должен создать дамп произвольного класса домена для полей, запрошенных через параметры для тега. Это прекрасно работает, если поле является нормальным атрибутом. Но, если это отношения "hasMany", каковы мои варианты?
Другими словами, как я могу проверить, соответствует ли строка, переданная в качестве параметра тегу, отношению hasMany, и получить соответствующее доменное имя?
Обратите внимание, что я могу создать экземпляр класса домена и создать для него getClass - может быть, это в свойствах? Я проверю, но любой вклад очень ценится.
Чтобы быть более точным, в следующем коде мне нужно проверить, является ли какое-либо из имен отношением hasMany в отличие от атрибута, получить доступ к этому домену и распечатать все его экземпляры.
Вот код, как он существует nos:
/ *
* Тег для вывода информации об уровне домена
*
* /
def get_domain_info = { attrs, body ->
// get the domain name for lookup on the Misc Fields XML table
def id = attrs['id']
def domainName = attrs['domain_name']
// get the domainInstance
def domainInstance = grailsApplication.getArtefact("Domain",domainName)?.
getClazz()?.get(id)
def dataNames = attrs['data_names']
def dataNameArray = dataNames.split(",")
out << "<div class=\"dialog\">"
for(dataName in dataNameArray) {
out << "<tr class=\"prop\">"
out << "<td valign=\"top\" class=\"name\">" + dataName + "</td>"
def dataValue = domainInstance[dataName.trim()]
if (dataValue == null){
dataValue = ""
}
def valueLine
if ( dataValue.class == java.sql.Timestamp){
valueLine = "<td valign=\"top\" class=\"value\">" +
dataValue.format("d MMM yyyy") + "</td>"
}
else {
valueLine = "<td valign=\"top\" class=\"value\">" + dataValue + "</td>"
}
out << valueLine
out << "</tr>"
}