当前位置: 首页 > 面试题库 >

使用条件运算符在Grails中渲染“作为JSON”无法正确渲染

沈伟
2023-03-14
问题内容

今天遇到了这个奇怪的结果,试图在Grails 2.0.4中将对象列表呈现为JSON …(我知道我会后悔由于我鼻子底下的东西而问这个问题……
已更新 5/26,我的预测是正确的,请参见下文:-))

这很好用;JSON在浏览器中正确呈现…

def products = [] //ArrayList of Product objects from service       
def model = (products) ? [products:products] : [products:"No products found"] 
render model as JSON

..so为什么缩短的版本没有model工作?

def products = []       
render ((products) ? [products:products] : [products:"No products found"]) as JSON

上面代码生成的JSON作为单行文本输出,因此我怀疑它没有被拾取as JSON,但是正确地加上了括号,这是怎么回事?

[‘products’:[com.test.domain.Product:null,com.test.domain.Product …]


问题答案:

这是的正常行为render。当您提供render无括号的参数时

render model as JSON

进行隐式调整以设置content-typeto
text/json。但是,在后一种情况下,你已经在不知不觉中进行的render使用像括号[标记的第一支撑后render品牌呈现正常使用的render()]

render ((products) ? [products:products] : [products:"No products found"]) as JSON

在上述情况下,你必须在指定的参数传递给render提了contentTypetext或者modelstatus等于是为了使在线控制逻辑JSON在浏览器/查看您所要做的象下面这样:

render(contentType: "application/json", text: [products: (products ?: "No products found")] as JSON)

您还可以使用content-type作为text/json。我更喜欢application/json

更新
最简单的方法:
render([products: (products ?: "No products found")] as JSON)



 类似资料:
  • 我正在尝试使用渲染插件将html文件渲染为pdf,我的控制器方法是, 和我的下载。gsp文件为, 我在BuildConfig中添加了以下依赖项。groovy文件 我收到以下堆栈跟踪, 注意:相同的代码库适用于grails 2.2.4版本,这个问题只在grails 2.5.0版本中出现

  • 在控制台上获取以下第一行: 35026:1978749]CoreText注意:客户端请求的名称“.SFNS-Regular”,它将获得Times-Roman而不是预期的字体。所有系统UI字体访问都应通过适当的API,如CTFontCreateUIFontForLanguage()或[NSFont systemFontOfSize:]。2021 06月09日00:00:46.808 java[350

  • 我想将视图渲染为pdf,并尝试使用Grails渲染插件2.0.3 我尝试了最简单的gsp-file开始: 在控制器中: 最后是: 我错过了什么?或者它不应该与这个版本的grails(3.2.4)一起使用? 也许有更好的插件可以使用?

  • Mpx中的条件渲染与原生小程序中完全一致,详情可以查看这里 简单示例如下: <template> <view class="container"> <!-- 通过 wx:if 的语法来控制需要渲染的元素 --> <view wx:if="{{ score > 90 }}"> A </view> <view wx:elif="{{ score > 60 }}"> B </

  • 使用以下代码,我得到了这样的坏输出: %PDF-1.4%���� 4.0目标 而不是pdf。代码如下: 如何在浏览器中获取实际的pdf输出。

  • 主要内容:React 实例,元素变量,React 实例,与运算符 &&,React 实例,三目运算符,阻止组件渲染,React 实例在 React 中,你可以创建不同的组件来封装各种你需要的行为。然后还可以根据应用的状态变化只渲染其中的一部分。 React 中的条件渲染和 JavaScript 中的一致,使用 JavaScript 操作符 if 或条件运算符来创建表示当前状态的元素,然后让 React 根据它们来更新 UI。 先来看两个组件: 我们将创建一个 Greeting 组件,它会根据用户