关于表单用enctype=“multipart/form-data"后台用request.getParameter(”")为null的办法
问题描述
这个问题之前帮室友做项目的时候也遇到过,刚好这次做书城项目涉及到要传书的图片以及书本名等其他属性一起提交时遇到文件上传成功,但是表单提交的其他属性用request.getParameter("")取出来的值为null,找了很久其他的办法都模仿不来。于是便想到用下面的这个方法,由于自己水平有限是个小菜鸟,加上第一次写技术博客,麻烦各位大佬轻点喷,有其他的办法麻烦指点,谢谢!
遇到的问题:
<form class="form-horizontal" role="form" action="" method="post"
enctype="multipart/form-data" οnsubmit="return submitHandler()" id="form">
<div class="form-group">
<label for="firstname" class="col-sm-2 control-label">书本名</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="bookname" name="bookname"
placeholder="请输入书本名" value="${param.bookname}">
</div>
</div>
<div class="form-group">
<label for="lastname" class="col-sm-2 control-label">书本价格</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="b_price" name="b_price"
placeholder="请输入书本价格" value="${param.b_price}">
</div>
</div>
<div class="form-group">
<label for="lastname" class="col-sm-2 control-label">书本图片</label>
<div class="col-sm-10">
<input type="file" class="form-control" id="image" name="image">
</div>
</div>
<div class="form-group">
<label for="lastname" class="col-sm-2 control-label">书本库存</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="stock" name="stock"
placeholder="请输入书本库存" value="${param.stock}">
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-default">修改</button>
</div>
</div>
</form>
结果:
解决方案:
用js
<form class="form-horizontal" role="form" action="" method="post"
enctype="multipart/form-data" onsubmit="return submitHandler()" id="form">
<script>
//点击登录执行的逻辑
function submitHandler() {
var bookname = document.getElementById("bookname").value;
var b_price = document.getElementById("b_price").value;
var stock = document.getElementById("stock").value;
var action = null;
action = "${pageContext.request.contextPath }/adminModifyBooks?action=modify&&bookname="+bookname+"&&b_price="+b_price+"&&stock="+stock;
document.getElementById("form").action = action;
return true;
}
</script>