今天做一个简单的商城项目的时候碰到了一个问题,将前台页面传过来的参数直接想当然的使用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>

在商城项目中遇到一个问题,使用enctype="multipart/form-data"上传表单时,BeanUtils无法正常封装前台参数。原因是数据以二进制传输,request无法识别。解决方法是通过FileItem的isFormField方法判断并获取字段名和值,存入自定义Map,然后用BeanUtils进行封装。
最低0.47元/天 解锁文章
3475

被折叠的 条评论
为什么被折叠?



