Grails 视图为 DTO 对象列表呈现额外的逗号
Grails View Renders Extra Comma For DTO Object List
我正在努力将 Grails 4.0.0 应用程序升级到 4.0.4。应用程序主要是工作。
我在使用一个 GSON 视图时遇到问题 returns DTO 的集合(不是域对象)。
版本:Grails 4.0.4、GORM 7.0.6.RELEASE、Win10、openjdk 1.8.0_262
它 returns 预期对象的数组,但在 4.0.4 中,在左大括号之后的字段前有一个额外的逗号,即:
[{,*MY EXPECTED OBJECT 1 DATA*} , {,*MY EXPECTED OBJECT 2 DATA*}]
这让客户不高兴。视图看起来像:
import com.myapp.dto.MyDTO
model {
List<MyDTO> MyDTOList
}
json g.render(template: "itemView", collection: MyDTOList)
即使只有一个字段,MyDTOList 视图也会导致问题:
json g.render(MyDTO) {
afield MyDTO.afield
}
如果我从视图中删除 afield(即空白视图),则不会插入额外的逗号。如果我可以提供更多信息,请告诉我。谢谢
您没有描述所需的响应结构,但这是一个合理的猜测...
在 https://github.com/jeffbrown/daftspanieljson 查看项目。
package daftspanieljson
import com.myapp.dto.MyDTO
class MyDTOController {
static responseFormats = ['json', 'xml']
def index() {
def data = [new MyDTO(afield: 'MY EXPECTED OBJECT 1 DATA'),
new MyDTO(afield: 'MY EXPECTED OBJECT 2 DATA')]
respond data
}
}
import com.myapp.dto.MyDTO
model {
List<MyDTO> myDTOList
}
json tmpl.itemView(myDTOList)
import com.myapp.dto.MyDTO
model {
MyDTO myDTO
}
json {
afield myDTO.afield
}
当我 运行 该应用程序并向该操作发送请求时,我收到以下响应:
[
{
"afield": "MY EXPECTED OBJECT 1 DATA"
},
{
"afield": "MY EXPECTED OBJECT 2 DATA"
}
]
我正在努力将 Grails 4.0.0 应用程序升级到 4.0.4。应用程序主要是工作。 我在使用一个 GSON 视图时遇到问题 returns DTO 的集合(不是域对象)。
版本:Grails 4.0.4、GORM 7.0.6.RELEASE、Win10、openjdk 1.8.0_262
它 returns 预期对象的数组,但在 4.0.4 中,在左大括号之后的字段前有一个额外的逗号,即:
[{,*MY EXPECTED OBJECT 1 DATA*} , {,*MY EXPECTED OBJECT 2 DATA*}]
这让客户不高兴。视图看起来像:
import com.myapp.dto.MyDTO
model {
List<MyDTO> MyDTOList
}
json g.render(template: "itemView", collection: MyDTOList)
即使只有一个字段,MyDTOList 视图也会导致问题:
json g.render(MyDTO) {
afield MyDTO.afield
}
如果我从视图中删除 afield(即空白视图),则不会插入额外的逗号。如果我可以提供更多信息,请告诉我。谢谢
您没有描述所需的响应结构,但这是一个合理的猜测...
在 https://github.com/jeffbrown/daftspanieljson 查看项目。
package daftspanieljson
import com.myapp.dto.MyDTO
class MyDTOController {
static responseFormats = ['json', 'xml']
def index() {
def data = [new MyDTO(afield: 'MY EXPECTED OBJECT 1 DATA'),
new MyDTO(afield: 'MY EXPECTED OBJECT 2 DATA')]
respond data
}
}
import com.myapp.dto.MyDTO
model {
List<MyDTO> myDTOList
}
json tmpl.itemView(myDTOList)
import com.myapp.dto.MyDTO
model {
MyDTO myDTO
}
json {
afield myDTO.afield
}
当我 运行 该应用程序并向该操作发送请求时,我收到以下响应:
[
{
"afield": "MY EXPECTED OBJECT 1 DATA"
},
{
"afield": "MY EXPECTED OBJECT 2 DATA"
}
]