我有简单的层次结构:
class Atom {}
class Text extends Atom { String value}
class Unit {
List atoms
static hasMany = [ atoms:Atom ]
}
假设我们创建一个 Text 对象和一个 Unit 对象,并选择 Unit 作为 Text 的父级。它工作正常。当我在 Unit 上调用 show 方法时,我看到我的 Unit 由一个 Atom 组成。当我点击这个 atom 时,它会将我重定向到 atom 控制器,但我的 atom 实际上是文本,我想查看 Text 控制器。这是预期的行为,因为在我的 show.gsp 中有这样的代码:
<g:each in="${unitInstance.atoms}" var="a">
<span class="property-value" aria-labelledby="atoms-label">
<g:link controller="atom" action="show" id="${a.id}">
${a?.encodeAsHTML()}
</g:link>
</span>
</g:each>
好的,数据库将实际原子类型存储在“类”字段中,所以我编辑了第 3 行:
<g:link controller="${a.class}" action="show" id="${a.id}">
并且 ${a.class} 总是返回原子。所以,我的问题是 - 我们如何才能获得实际的班级名称?