请求处理后,Java Servlet和Commons FileUpload getParameter

时间:2012-11-16 12:36:12

标签: java jsp servlets request apache-commons

我使用 Apache Commons File Upload API 在Java EE中有一个应用程序。到目前为止一切顺利,但我有一个问题。

我在服务器端进行了某种验证 - 如果有任何问题,我必须将用户发送到上一页并将问题告知用户。此外,我必须将数据加载到表单中,但是当我在JSP中使用request.getParameter("key")时,它将返回null

我已经测试了commons-fileupload未处理的请求,我看到了结果。

我的问题是如何保留request.getParameter("key")并在org.apache.commons.fileupload.servlet.ServletFileUpload处理请求后将其发送回客户端?

在API处理请求后

<%out.println(request.getParameter("cedula"));%>返回null

2 个答案:

答案 0 :(得分:0)

这是正常的。整个HTTP请求以不同的格式发送,只有Apache Commons FileUpload可以处理。 request.getParameter("name")不适用于任何参数,也不适用于常规参数。

您应该使用完全相同的Apache Commons FileUpload API从常规输入字段中提取值。你通常应该在代码示例中的item.isFormField()行返回true时执行此操作(在返回false时提取上传的文件,您可能已经实现了该部分)

或者,如果您已经在Servlet 3.0(Tomcat 7,Glassfish 3等)上,那么您也可以在servlet上使用@MultipartConfig注释,以便您可以通过{获取上传的文件{1}}并继续使用request.getPart("name")作为常规输入字段。

另见:

答案 1 :(得分:0)

1)为什么使用getParameter代替getAttribute

2)当验证错误发生时,请求被重定向,这意味着发送了一个新的请求对象,您需要再次提供请求属性。

将操作分派给JSP时的方式与此相同。如果您想传递参数,那么您应该在action标记的属性<form>中提供该参数。

它似乎依赖于框架,但你可以试试。请注意,在JSP中,如果您使用EL,则可以尝试${param}来访问参数,而${attr}则可以访问属性,如果 scriplets' getParameter ,如果你真的想通过URL传递它。 JSTL上还有good art