表单提交后Controller无法接收按钮参数及文件的问题
问题解决:表单提交后Controller无法接收参数
核心问题及修复步骤:
请求路径不匹配
表单的action属性是/pqra/secure/pqca/verifydoc,但Controller的@RequestMapping映射路径是/secure/pqca/verifydoc,多了pqra前缀,导致请求没有匹配到对应的Controller方法,参数自然无法接收。- 修复:将表单的
action改为/secure/pqca/verifydoc,或者在Controller的@RequestMapping中添加/pqra前缀,保持两者路径一致。
- 修复:将表单的
按钮属性拼写错误
第二个提交按钮的class属性写成了lass,少了字母c,虽不影响参数传递,但属于语法错误,建议修正为class="btn btn-sm btn-primary login-submit-cs"。Controller未指定请求方法
原Controller的@RequestMapping没有明确指定POST请求方法,可能导致请求匹配异常。- 修复:在
@RequestMapping中添加method = RequestMethod.POST,确保只处理POST请求。
- 修复:在
确保Multipart文件解析配置正确
表单使用enctype="multipart/form-data"上传文件,Spring需要配置MultipartResolver来解析这类请求:- 若使用Spring Boot,默认已配置
StandardServletMultipartResolver,无需额外操作; - 若使用传统Spring MVC,需在配置文件中添加:
或Java配置:<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize" value="10485760"/> <!-- 限制最大上传10MB --> </bean>@Bean public MultipartResolver multipartResolver() { CommonsMultipartResolver resolver = new CommonsMultipartResolver(); resolver.setMaxUploadSize(10485760); return resolver; }
- 若使用Spring Boot,默认已配置
修正后的代码示例
修正后的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
相关产品推荐
相关产品推荐

