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

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

def query = PlannedEvent.where{}
query = query.where{rooms.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
   }

【问题讨论】:

    标签: json rest grails findall


    【解决方案1】:

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

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

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

    【讨论】:

    • 提供的链接很有帮助,但是我如何根据请求返回不同的结果,例如:/plannedevents => 给出没有详细信息的列表,/plannedevents/1 => 给出来自计划事件的详细信息
    猜你喜欢
    • 2011-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-09
    • 2019-11-17
    • 2017-03-22
    • 2013-10-22
    • 2012-04-18
    相关资源
    最近更新 更多