我有定义的以下 Controller

class BookController {

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

当我调试它时,绑定(bind)在bookCommand上完成,而当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]

知道这里发生了什么吗?

最佳答案

我们不支持将主体的请求绑定(bind)到多个命令对象。您可以选择的一种方法是将它们聚合为1类,如下所示:

class SomeClass {
    BookCommand bookCommand
    BookCommand anotherBookCommand
}

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

10-08 02:05