是否有任何理由解释为什么在声明以下伪接口方法时会出现编译错误(Body parameters cannot be used with form parameters):
1) foo(@PathVariable("pathVariableName") String pathVariable,
@RequestBody List<String> anyVariable)但是,当我使用这个(切换参数顺序)时,一切都很好:
2) foo(@RequestBody List<String> anyVariable,
@PathVariable("pathVariableName") String pathVariable)在当前的项目中,所有其他的假象方法在前一种形式下都能很好地工作。我不知道这些信息是否重要,但这是我尝试使用带有@RequestBody参数注释的列表的唯一方法。
参数的顺序在这里像这个回答一样重要吗?在这种情况下,在哪些情况下我应该注意参数顺序?假装文档似乎使用它的方式,我有问题。
顺便说一句:我停止了我的项目几分钟,在这里发布这篇文章,在尝试运行应用程序之前,就在编译成功之后。我不太确定上面的第二种方法在运行时是否有效。它刚刚通过编译阶段,没有错误。
编辑:这实际上不是编译错误。此错误发生在springboot应用程序的启动过程中。
发布于 2017-05-04 03:38:32
您需要检查您的url模板字符串。如果url中不包含{pathVariableName},则@PathVariable("pathVariableName")将被视为表单参数。在假想中,表单参数不能与同一方法中的体参数(@RequestBody)一起使用。这就是为什么抛出异常的原因。
在第二种情况下,当验证@RequestBody注释时,假装不知道第二个参数的存在,该参数将被视为表单参数。所以它现在不会抛出任何异常。我不确定这是否是有意的行为,但可能是验证错误。
https://stackoverflow.com/questions/43765860
复制相似问题