grails - 在 Controller 中的后续命令对象上初始化命令对象时出错

标签 grails groovy grails-controller

我有定义的以下 Controller

class BookController {

  def book(BookCommand bookCommand,
           AnotherBookCommand bookCommand2) 
  {
    ....
  }

当我调试它时,在 bookCommand 上完成了绑定(bind),当轮到 bookCommand2 进行绑定(bind)时,它会抛出此异常
Error in object 'bookCommand2': codes []; arguments []; default message [Error occurred initializing command object [bookCommand2]. org.apache.groovy.json.internal.Exceptions$JsonInternalException: Wrapped Exception
 CAUSE java.io.IOException :: Stream closed]

如果我尝试切换参数的顺序,即
class BookController {

  def book(AnotherBookCommand bookCommand2,
           BookCommand bookCommand) 
  {
    ....
  }

绑定(bind)是在 bookCommand2 上完成的,并且 bookCommand 的绑定(bind)会引发异常。
Error in object 'bookCommand': codes []; arguments []; default message [Error occurred initializing command object [bookCommand]. org.apache.groovy.json.internal.Exceptions$JsonInternalException: Wrapped Exception
 CAUSE java.io.IOException :: Stream closed]

知道这里发生了什么吗?

最佳答案

我们不支持将 body 的请求绑定(bind)到多个命令对象。您有一个选择是将它们聚合到 1 个类中,如下所示:

class SomeClass {
    BookCommand bookCommand
    BookCommand anotherBookCommand
}

然后让您的 Controller 操作接受其中之一并相应地组织 JSON 的主体。

关于grails - 在 Controller 中的后续命令对象上初始化命令对象时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62286704/

相关文章:

git - Grails和.gitignore

grails - 如何使用grails <g:set>标记 session 作用域?

Java 8::(双冒号)运算符的 Groovy 等效项

grails - 'groovy' 和 'grails-web' 插件 gradle 之间的冲突

grails - Grails:具有.gsp扩展名/格式的URL映射

grails - Grails:我们可以在g:link中将字符串作为id传递吗?还是其他方式?

grails - grails install-searchable-config

grails - grails中服务的spock测试

spring - 服务器在Grails中以302响应时如何获取响应正文?

session - grails在 session 中保留许多页面