Java Servlet 和 Commons FileUpload 在处理请求后获取参数

问题描述 投票:0回答:2

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

我在服务器端进行了某种验证 - 如果有任何问题,我必须将用户发送到上一页并将问题告知用户。另外,我必须将数据加载到表单中,但是当我在 JSP 中使用

request.getParameter("key")
时,它返回
null

我已经测试了

commons-fileupload
未处理该请求,我看到了结果。

我的问题是如何保留

request.getParameter("key")
并在
org.apache.commons.fileupload.servlet.ServletFileUpload
处理请求后将其发送回客户端?

<%out.println(request.getParameter("cedula"));%>
在 API 处理请求后返回
null

java jsp servlets request apache-commons
2个回答
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
注释,这样您就可以通过
request.getPart("name")
获取上传的文件并继续使用
request.getParameter("name")
作为常规输入字段。

另请参阅:


0
投票
  1. 为什么用

    getParameter()
    而不是
    getAttribute()

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

与将操作分派到 JSP 时的操作方式相同。如果你想传递参数,那么你应该在

action
标签的
<form>
属性中提供它。

这似乎依赖于框架,但你可以尝试。请注意,在 JSP 中,如果您使用 EL,如果您确实想通过 URL 传递它,则可以尝试使用

${param}
访问参数,使用
${attr}
访问属性,而不是使用 scriplets'
getParameter()
。 JSTL 上还有好艺术

© www.soinside.com 2019 - 2024. All rights reserved.