%{ // Eval fields tags fieldsHandler = [:] if(_body) { _body.setProperty('fieldsHandler', fieldsHandler); } }% #{if _body} #{doBody as:'skip' /} #{/if} #{if _fields} #{list items: _fields, as: 'c'} #{/list} #{/if} #{else} #{/else} #{list items: _caller.objects, as: 'object'} #{if _fields} #{list items: _fields, as: 'field'} #{/list} #{/if} #{else} #{if fieldsHandler['default']} %{ handler = fieldsHandler['default']; handler.setProperty('object', object); }% #{doBody body:handler /} #{/if} #{else} #{/else} #{/else} #{/list}
#{if !_sort || _sort.contains(c)} &{c} #{/if} #{else} &{c} #{/else} &{_caller.type.name}
#{if fieldsHandler[field]} %{ handler = fieldsHandler[field]; handler.setProperty('object', object); }% #{doBody body:handler /} %{ handler.setProperty('object', null); }% #{/if} #{else} #{if field_index == 1} ${object[field]?.toString()?.escape()?.raw() ?: '(no value)'} #{/if} #{else} #{if _caller.type.getField(field).type == 'file'} #{if object[field]} ${object[field].filename} (${object[field].get().size().formatSize()}) #{/if} #{/if} #{else} ${object[field]?.escape()?.raw()} #{/else} #{/else} #{/else} ${object.toString()?.escape()?.raw() ?: '(no value)'}