账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    在SpringMVC中为什么前台传入一个参数,controller却接受两个参数?
    36
    0

    题目描述

    在SpringMVC中为什么前台传入一个参数,controller却接受两个参数?
    一直搞不懂这一点,希望大家可以帮助我.

    后台:

    @PostMapping("/uploadFace")
        public JSONResult uploadFace(String userId, @RequestParam("file") MultipartFile[] files) throws IOException {

    前台:

     wx.uploadFile({
              url: serverUrl + '/user/uploadFace?userId=' + app.userInfo.id,
              filePath: tempFilePaths[0],
              name: 'file',
              header: {
                'content-type': 'application/json'
              }
    
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 顏2。baby 普通会员 1楼

      在SpringMVC中,Controller方法接受到的参数数量与前台传递的参数并不一定是一一对应的,这主要取决于你的请求方式(GET、POST等)、参数绑定方式以及ModelAndView处理器如何解析请求数据。

      例如:

      1. 前台可能通过URL路径变量的方式传递了一个参数,同时又在请求体(如POST表单)中传递了另一个参数。在Controller中,你可能会看到如下映射方法:

      java @GetMapping("/user/{id}") public String handle(@PathVariable("id") Long id, UserForm userForm) { // ... } 在这个例子中,id 是通过路径变量获取的,而 userForm 是从请求体中自动绑定的。

      1. 另一种情况是,SpringMVC支持将请求参数自动封装到对象中。例如,前端提交了一个包含多个字段的表单,后端可以创建一个对应的Java Bean来接收这些字段:

      java @PostMapping("/user") public String handle(UserForm userForm, BindingResult bindingResult) { // ... } 这里的 UserForm 类中可能包含了多个属性,尽管前端只发送了一个请求,但在SpringMVC中会被解析为多个参数。

      1. 还有一种可能是上传文件时,除了业务参数外还会有一个ServletAPI的MultipartFile类型的参数用来接收上传的文件。

      所以,当Controller接收到的参数数量与前端传递的“直观”参数数量不一致时,请检查请求的详细内容和Controller处理方法的参数定义。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部