更改结果 grails findAll 或响应方法

Posted

技术标签:

【中文标题】更改结果 grails findAll 或响应方法【英文标题】:Alter result grails findAll or respond method 【发布时间】:2014-03-12 16:29:47 【问题描述】:

目前我正在使用 Grails 开发 RESTFull。我使用 findAll 方法检索特定数据:

def query = PlannedEvent.where
query = query.whererooms.id == i 
respond query.findAll()

以及产生输出的response方法:

"class":"mp.ra.PlannedEvent","id":480,"baseEvent":"class":"Event","id":1636,"equipment":[],"rooms":["class":"Room","id":22]

如何更改结果以便提供有关 baseEvent 和 Room 的更多信息。

类设置如下:

class PlannedEvent     
   Event baseEvent

   static hasMany = [rooms:Room,equipment:Resource]
   static belongsTo = [Room,Event,Resource]

   static constraints = 
      equipment nullable:true
   

【问题讨论】:

【参考方案1】:

您需要为您的 PlannedEvent 域类定制 JSON Marshaller。基本上你需要实现自己的 marshller 然后注册它。

这里有一个很好的blog post,介绍了如何实现您自己的自定义 JSON 编组。

通过这种方式,您可以准确控制所有内容如何编组为 JSON。

【讨论】:

提供的链接很有帮助,但是我如何根据请求返回不同的结果,例如:/plannedevents => 给出没有详细信息的列表,/plannedevents/1 => 给出来自计划事件的详细信息

以上是关于更改结果 grails findAll 或响应方法的主要内容,如果未能解决你的问题,请参考以下文章

Grails findAll带有排序,顺序,最大值和偏移量?

SQL 到 HQL 查询 Grails

grails/mysql 时区更改

Grails spring security、servlet 过滤器和响应

Grails 更改 request.format?

Grails 或 Play 如何检测更改和热重载类?