jsp
<input type="checkbox" name="idList" value="1">1;
<input type="checkbox" name="idList" value="2">2;
<input type="checkbox" name="idList" value="3">3;
servlet
String[] idList = request.getParameterValues("idList");
但是 idList总是null,后来发现因为在form中有属性:enctype="multipart/form-data"(坑货)
找到问题了那就修改吧
贴一段servlet代码
List<String> idList = new ArrayList<String>();//1存放idList
Map<String,Object> map = new HashMap<String,Object>();//2存放其他表单数据
try {
//创建磁盘文件项工厂
DiskFileItemFactory factory = new DiskFileItemFactory();
//创建文件上传核心对象
ServletFileUpload upload = new ServletFileUpload(factory);
//解析request获得文件项对象集合
List<FileItem> parseRequest = upload.parseRequest(request);
for(FileItem item : parseRequest){
//判断是否是普通表单项
boolean formField = item.isFormField();
if(formField){
//普通表单项 获得表单的数据
String fieldName = item.getFieldName();
String fieldValue = item.getString("UTF-8");
if("idList".equals(fieldName))
{
midList.add(fieldValue);//3存放CheckBox表单项
}
else{
map.put(fieldName, fieldValue);//4存放其他普通表单项
}
}else{
//文件上传项 获得文件名称 获得文件的内容
String fileName = item.getName();
String path = this.getServletContext().getRealPath("upload");
if(fileName!=null)
{
InputStream in = item.getInputStream();
OutputStream out = new FileOutputStream(path+"/"+fileName);//I:/xxx/xx/xxx/xxx.jpg
IOUtils.copy(in, out);
in.close();
out.close();
//item.delete();
map.put("image", "upload/"+fileName);
}
}
}
//3解释一下为什么checkbox要单独放在List中
因为当checkbox多选时
fieldname:idList fieldvalue:1
fieldname:idList fieldvalue:2
fieldname:idList fieldvalue:3
如果直接放入map,key值相同只会保存一个value.