我有一个表单,其中包含一个文件输入字段和 2 个带有
name="action"
的按钮,值分别为 'sign'
和 'verify'
。
我试图在提交表单时获取该文件和按钮参数
但我的控制器没有接收到参数并且给出了 null。
这是我的表单操作 URL 映射的控制器代码
@RequestMapping(value="/secure/pqca/verifydoc")
public String verifiedDoc(@RequestParam("form_action") String form_action,
@RequestParam("document") MultipartFile file,
Model model, HttpServletRequest request) {
System.out.print("hiii " + request.getParameter("form_action"));
pqcaService.verifiedDoc(form_action, file, model, request);
return "pqca/verifyDocument";
}
这是表格
<form id="add_sign_form"
action="/pqra/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"
lass="btn btn-sm btn-primary login-submit-cs"
style="margin-top: 10px">
Verify Signature
</button>
</form>
您提交的表单不接受参数,因为您没有发送参数。
对控制器的请求是
POST
,其中包含 multipart/form-data
MIME 类型。这样就可以分部分解析了。其中一些应该包括来自输入字段的表单数据值存储。但是您使用 <button>
值来存储所需的参数值。该元素不会添加到表单数据中,因为它不是 <input>
字段。您应该使用隐藏的输入字段。
<input 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
<input type="submit"
id="verify_sign"
name="form_action"
value="verify"
lass="btn btn-sm btn-primary login-submit-cs"
style="margin-top: 10px">
Verify Signature