我为我的域对象定义并注册了一些自定义封送器。如果单独使用,只渲染一个实例,工作正常,但问题出现在我返回带有这些实例数组的地图时。在这一刻,我的自定义编组器没有被调用。
这是我的一个marshallers:
class BackendCompanyMarshaller implements ObjectMarshaller<JSON> {
@Override
public boolean supports(Object object) {
object instanceof Company
}
@Override
public void marshalObject(Object object, JSON converter)
throws ConverterException {
JSONWriter writer = converter.getWriter()
writer.object()
writer.key('id').value(object.id)
.key('name').value(object.name?.encodeAsHTML()?:'')
.key('description').value(object.description?.encodeAsHTML()?:'')
.key('enterprise').value(object.enterprise?.encodeAsHTML()?:'')
writer.endObject()
}
}
Ans例如,这是我从控制器返回的内容:
render text:[achievements:arrayOfAchievements, total:2] as JSON
在以前版本的grails中,我知道有很深的marshallers但我找不到类似grails 3的东西。
我还尝试为List实现自定义编组,但我不确定应该返回或写入什么。