在控制器中的后续命令对象上初始化命令对象时出错

Error occurred initializing command object on succeeding command objects in controller

我定义了以下控制器

class BookController {

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

当我调试它时,绑定是在 bookCommand 上完成的,当轮到 bookCommand2 绑定时,它抛出这个异常

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) 
  {
    ....
  }

绑定在 bookCommand2 上完成,绑定 bookCommand 抛出异常。

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]

知道这里发生了什么吗?

我们不支持将正文的请求绑定到多个命令对象。您的一种选择是将它们聚合成 1 class,如下所示:

class SomeClass {
    BookCommand bookCommand
    BookCommand anotherBookCommand
}

然后让您的控制器操作接受其中之一并相应地组织 JSON 的正文。