今天做一个简单的商城项目的时候碰到了一个问题,将前台页面传过来的参数直接想当然的使用BeanUtils的populate封装进了bean,去数据库看发现只有自己给bean设置的值,前台传的一个都没有存储进去.查了资料发现,使用了multipart/form-data之后,表单数据都是二进制传输的,request不能识别到,那么只能使用fileitem的isFormFiled方法判断是表单中的数据之后,取出fieldname属性名.还有getString得到属性值.封装进自己创建的map里面.再使用BeanUtils进行封装.贴上代码.
addProduct.jsp
<%@page contentType="text/html; UTF-8" language="java" pageEncoding="UTF-8" %>
<html>
<head>
<title>添加商品</title>
<link rel="stylesheet" href="css/style.css" type="text/css" media="screen"/>
<style type="text/css">
.main {
text-align: center;
border-radius: 20px;
width: 300px;
height: 400px;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
td {
white-space: nowrap;
}
</style>
</head>
<body>
<div class="main">
<form action="${pageContext.request.contentType}/addProduct" method="post" enctype="multipart/form-data">
<table>
<tr>
<td>商品名称</td>
<td><input type="text" name="name"/></td>
</tr>
<tr>
<td>商品价格</td>
<td><input type="text" name="price"/></td>
</tr>
<tr>