我在JSP中有一个表单
<form action="/view/tool/Process" method="post"
enctype="multipart/form-data" target="_blank">
<p class="bottomPadded"> </p>
<input type="file" name="file" />
<input id="fileprogramtype" type="text" name="programtype" style="display: none;"/>
<p class="bottomPadded"> </p>
<p class="generalContent bottomPadded"><input class="imageBtn" type="image" name="image" src="/images/upload.png" /></p>
</form>
为此,请求被映射为
<servlet>
<servlet-name>ProcessUpload</servlet-name>
<servlet-class>view.tool.servlet.ProcessUpload</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ProcessUpload</servlet-name>
<url-pattern>/view/tool/Process</url-pattern>
</servlet-mapping>
任何想法如何在ProcessUpload中获取<input id="fileprogramtype" type="text" name="programtype" style="display: none;"/>
的值
我尝试request.getParamter("programtype")
,它返回null。
我甚至尝试过
Collection<Part> parts = request.getParts();
for(Part p : parts) {
logger.info("Parts ::: "+p.getName());
if ("programtype".equals(p.getName()))
{
InputStream inputStream = p.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
programtype = br.readLine();
logger.info("Here is Program Type ::"+programtype);
}
}
它甚至没有进入内部循环。
有人可以告诉我多部分表单请求如何获取其他参数的值吗?
答案 0 :(得分:0)
任何想法我怎样才能获得
<input id="fileprogramtype" type="text" name="programtype" style="display: none;"/>
的价值 ProcessUpload
是的,你可以过关
request.getParameter("programtype");
根据Java Doc for ServletRequest#getRequestParameter method
,您确定获得了null
吗?
以String形式返回请求参数的值,如果是,则返回null 参数不存在。请求参数是额外信息 随请求发送。对于HTTP servlet,参数包含在 查询字符串或发布的表单数据。
如果您没有手动设置值,则可以获取空白值,因为它是隐藏字段但您不会获得空值。
在我的DEV环境中验证类似代码后回答相同问题
答案 1 :(得分:0)
使用enctype="multipart/form-data"
时,您无法使用request.getParameter("programtype")
;。
在这种情况下,表单字段不可用作请求的参数,它们包含在流中,因此您需要从流中获取它们。一种可能的方法是使用commons-fileupload。以下是官方文档中的示例代码(请参阅“处理上传的项目”部分)
// Process the uploaded items
Iterator<FileItem> iter = items.iterator();
while (iter.hasNext()) {
FileItem item = iter.next();
if (item.isFormField()) {
processFormField(item);
} else {
processUploadedFile(item);
}
}
对于常规表单字段
// Process a regular form field if (item.isFormField()) {
String name = item.getFieldName();
String value = item.getString();
... }