好的,我有两个Java Servlet,一个用于让用户选择要删除的图像(DeleteImages
),另一个用于实际删除图像(HandleDelete
)。 DeleteImages
显示容器中的所有图像,并带有复选框HTML表单,供用户选择要删除的图像。然后,使用POST,servlet将该信息传递给HandleDelete
,它会迭代它收到的图像并删除它们。
我实际上有这个工作,但后来我尝试更改代码的结构(将DeleteImages
转发到.jsp文件,该文件输出HTML表单,然后转发到HandleDelete
)但是没有成功,所以我试图回到原来的方式,现在它不工作,即使我很确定它和我一样以前有过。
来自DeleteImages
:
// retrieve image files
List<? extends SwiftObject> objs = os.objectStorage().objects().list("imageFiles");
out.println("<!DOCTYPE html><html><head><title>Object Storage - Delete</title><link rel='stylesheet' href='stylesheet.css' type='text/css' /></head>"
+ "<body>
<h1>Select images to Delete from container</h1>
<form method='POST' enctype='multipart/form-data' action='/ImageUpload/OSHandleDelete'>");
for (SwiftObject o : objs) {
// omitted code that gets the image's name, date last modified, and filepath (all Strings, I know this works)
out.println("<b>Name:</b> " + name + "<br/> <b>Time of Upload:</b> " + date + "<br/>"
+ "<input type='checkbox' name='"+name+"'> "
+ "<img src='"+filepath+"' alt='' style='max-width:800px;' /> <br/> <br/> <br/> ");
}
out.println("<input type='submit' value='Delete Images' /></form>");
out.println("</form> <br/> <br/> <div><br/><a class='return' href='index.jsp'><b>Click here to return home</b></a><br/><br/></div> <br/> <br/></body></html>");
来自HandleDelete
:
Enumeration<String> parameterNames = request.getParameterNames();
if (!parameterNames.hasMoreElements())
System.out.println("no parameters (null)");
while (parameterNames.hasMoreElements()) {
String paramName = parameterNames.nextElement();
System.out.println("*****************");
System.out.println("parameter: " + paramName);
String[] vals = request.getParameterValues(paramName);
if (vals == null)
System.out.println(" vals is null for " + paramName);
else {
for (int i = 0; i < vals.length; i++) {
System.out.println(" vals["+i+"]: " + vals[i]);
}
}
现在除了印刷语句之外我还没有HandleDelete
做任何事情。这是因为我使用request.getParameter("<name>")
来确定用户是否检查了<name>
的图像(即,如果它未被检查,但是如果它未被检查则是否为空) 。
HTML表单与图像和所有内容完美展现。我的问题是,无论在HTML表单中检查了什么,HandleDelete
始终会打印到控制台no parameters (null)
,这意味着没有任何内容从DeleteImages
传递到HandleDelete
。我感觉问题来自(1)DeleteImages
中的setAttribute语句或(2)HTML表单中的内容。我已经做了大量的搜索,我非常自信我拥有的是正确的,但我真的无法弄清楚导致这个问题的原因(特别是因为我在这里)非常确定这正是我以前所做的,并且它有效。有没有人有任何想法?
答案 0 :(得分:0)
我发现了错误:我收录了enctype=multipart/form-data
不完全确定导致错误的原因,但我删除了该部分,现在它完全传递了参数。谢谢你的帮助!