You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

表单提交后Controller无法接收按钮参数及文件的问题

问题解决:表单提交后Controller无法接收参数

核心问题及修复步骤:

  1. 请求路径不匹配
    表单的action属性是/pqra/secure/pqca/verifydoc,但Controller的@RequestMapping映射路径是/secure/pqca/verifydoc,多了pqra前缀,导致请求没有匹配到对应的Controller方法,参数自然无法接收。

    • 修复:将表单的action改为/secure/pqca/verifydoc,或者在Controller的@RequestMapping中添加/pqra前缀,保持两者路径一致。
  2. 按钮属性拼写错误
    第二个提交按钮的class属性写成了lass,少了字母c,虽不影响参数传递,但属于语法错误,建议修正为class="btn btn-sm btn-primary login-submit-cs"。

  3. Controller未指定请求方法
    原Controller的@RequestMapping没有明确指定POST请求方法,可能导致请求匹配异常。

    • 修复:在@RequestMapping中添加method = RequestMethod.POST,确保只处理POST请求。
  4. 确保Multipart文件解析配置正确
    表单使用enctype="multipart/form-data"上传文件,Spring需要配置MultipartResolver来解析这类请求:

    • 若使用Spring Boot,默认已配置StandardServletMultipartResolver,无需额外操作;
    • 若使用传统Spring MVC,需在配置文件中添加:
      <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
          <property name="maxUploadSize" value="10485760"/> <!-- 限制最大上传10MB -->
      </bean>
      
      或Java配置:
      @Bean
      public MultipartResolver multipartResolver() {
          CommonsMultipartResolver resolver = new CommonsMultipartResolver();
          resolver.setMaxUploadSize(10485760);
          return resolver;
      }
      

修正后的代码示例

修正后的Controller

@RequestMapping(value="/secure/pqca/verifydoc", method = RequestMethod.POST)
public String verifiedDoc(@RequestParam("form_action") String form_action, 
                          @RequestParam("document") MultipartFile file, 
                          Model model, HttpServletRequest request) {
    
    System.out.println("form_action: " + form_action);
    System.out.println("上传文件名: " + file.getOriginalFilename());
    pqcaService.verifiedDoc(form_action, file, model, request);
    return "pqca/verifyDocument";
}

修正后的表单

<form id="add_sign_form" 
      action="/secure/pqca/verifydoc"
      method="post" 
      enctype="multipart/form-data">

    <div class="col-lg-8">
        <input type="file"
               name="document"
               path="doc"
               class="form-control"
               placeholder="document"
               maxlength="50" />
    </div>

    <button type="submit" 
            id="add_sign" 
            name="form_action" 
            value="sign"
            class="btn btn-sm btn-primary login-submit-cs" 
            style="margin-top:  10px">
        Add Signature
    </button>

    <button type="submit" 
            id="verify_sign" 
            name="form_action"
            value="verify"
            class="btn btn-sm btn-primary login-submit-cs"
            style="margin-top: 10px">
        Verify Signature
    </button>
</form>

内容的提问来源于stack exchange,提问作者Ashok kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 20:39:51