Kemarin saya mencoba implemetasi
Rendering Partial RESTful Responses ternyata untuk index tidak bekerja dengan baik pada grails versi 2.3.11.
Hal ini disebabkan karena terjadi bug pada grails.rest.render.json.JsonCollectionRenderer#renderJson(JSON converter, RenderContext context)
Bisa dilihat source code versi 2.3.11 sebagai berikut
package grails.rest.render.json
import grails.converters.JSON
import grails.rest.render.ContainerRenderer
import grails.rest.render.RenderContext
import groovy.transform.CompileStatic
import org.codehaus.groovy.grails.web.mime.MimeType
/**
* ....
*/
@CompileStatic
class JsonCollectionRenderer extends JsonRenderer implements ContainerRenderer {
final Class componentType
...
@Override
protected void renderJson(JSON converter, RenderContext context) {
converter.setExcludes(componentType, excludes != null ? excludes : context.excludes)
converter.setIncludes(componentType, includes != null ? includes : context.includes)
converter.render(context.getWriter())
}
}
Dengan melihat kode diatas nilai context.excludes tidak akan bisa di set pada converter karena field excludes tidak pernah null.
Seharusnya kode nya adalah sebagai berikut..
package grails.rest.render.json
import grails.converters.JSON
import grails.rest.render.ContainerRenderer
import grails.rest.render.RenderContext
import groovy.transform.CompileStatic
import org.codehaus.groovy.grails.web.mime.MimeType
/**
* ....
*/
@CompileStatic
class JsonCollectionRenderer extends JsonRenderer implements ContainerRenderer {
final Class componentType
...
@Override
protected void renderJson(JSON converter, RenderContext context) {
converter.setExcludes(componentType, (excludes || context.excludes==null)? excludes : context.excludes)
converter.setIncludes(componentType, includes != null ? includes : context.includes)
converter.render(context.getWriter())
}
}
Tidak ada komentar:
Posting Komentar