首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Springcloud Netflix伪参数顺序

Springcloud Netflix伪参数顺序
EN

Stack Overflow用户
提问于 2017-05-03 16:50:53
回答 1查看 1.4K关注 0票数 2

是否有任何理由解释为什么在声明以下伪接口方法时会出现编译错误(Body parameters cannot be used with form parameters):

代码语言:javascript
复制
1) foo(@PathVariable("pathVariableName") String pathVariable, 
       @RequestBody List<String> anyVariable)

但是,当我使用这个(切换参数顺序)时,一切都很好:

代码语言:javascript
复制
2) foo(@RequestBody List<String> anyVariable, 
       @PathVariable("pathVariableName") String pathVariable)

在当前的项目中,所有其他的假象方法在前一种形式下都能很好地工作。我不知道这些信息是否重要,但这是我尝试使用带有@RequestBody参数注释的列表的唯一方法。

参数的顺序在这里像这个回答一样重要吗?在这种情况下,在哪些情况下我应该注意参数顺序?假装文档似乎使用它的方式,我有问题。

顺便说一句:我停止了我的项目几分钟,在这里发布这篇文章,在尝试运行应用程序之前,就在编译成功之后。我不太确定上面的第二种方法在运行时是否有效。它刚刚通过编译阶段,没有错误。

编辑:这实际上不是编译错误。此错误发生在springboot应用程序的启动过程中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-04 03:38:32

您需要检查您的url模板字符串。如果url中不包含{pathVariableName},则@PathVariable("pathVariableName")将被视为表单参数。在假想中,表单参数不能与同一方法中的体参数(@RequestBody)一起使用。这就是为什么抛出异常的原因。

在第二种情况下,当验证@RequestBody注释时,假装不知道第二个参数的存在,该参数将被视为表单参数。所以它现在不会抛出任何异常。我不确定这是否是有意的行为,但可能是验证错误。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43765860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档