gpt4 book ai didi

rest - 在 grails 中将 transient 域类属性作为 restful json 或 xml 响应包括在内

转载 作者:行者123 更新时间:2023-12-02 01:45:08 24 4
gpt4 key购买 nike

我已经阅读了很多尝试并实现这一目标的方法,但我认为这会相当容易吗?

给定一个域类:

class DomainClassTest{
String foo
String bar

//add accessor
String getMessage() {
"Hello"
}
}

我想在 xml 和 json 响应中包含 transient 属性“消息”。

完成此任务的最简单方法是什么?

我已经阅读了关于渲染器的文档; http://grails.org/doc/latest/guide/single.html#renderers

我尝试了以下方法:

DomainClassTestController.groovy:

class DomainClassTestController extends RestfulController<DomainClassTestController>{
static responseFormats = ['xml','json']

DomainClassTestController() {
super(DomainClassTest)
}
}

/conf/spring/resources.groovy

beans = {
xmlDomainClassTestRenderer(XmlRenderer, DomainClassTest) {
includes = ['message']
}
jsonDomainClassTestRenderer(JsonRenderer, DomainClassTest) {
includes = ['message']
}
}

很简单,但是 json/xml GET 请求返回空。

我很难相信没有一种不使用 ObjectMarshallers 或转换器来修改响应的简单方法?

最佳答案

我也在处理这个问题,发现有一个非常有用的插件可以自定义域对象的编码/渲染行为:"marshallers "

请注意,对于您使用插件的每个域(在类中指定“编码”),它将绕过您在 resources.groovy 中所做的有关域呈现的任何设置。 (恕我直言,这实际上是一件好事,因为它允许您将有关域类的渲染细节与类保存在同一位置。)

因此您的示例域类将如下所示:

class DomainClassTest {
static marshalling = {
virtual {
message { value, json -> json.value(value.getMessage()) }
}
}

String foo
String bar

//add accessor
String getMessage() {
"Hello"
}
}

关于rest - 在 grails 中将 transient 域类属性作为 restful json 或 xml 响应包括在内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26122039/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com