簡體   English   中英

處理請求后的 Java Servlets 和 Commons FileUpload getParameter

[英]Java Servlets and Commons FileUpload getParameter after Request being handle

我在 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

這是正常的。 整個 HTTP 請求以不同的格式發送,只有 Apache Commons FileUpload 可以處理。 request.getParameter("name")不適用於任何參數,也不適用於常規參數。

您應該使用相同的 Apache Commons FileUpload API 從常規輸入字段中提取值。 當他們的代碼示例中的item.isFormField()行返回true時,您通常應該這樣做item.isFormField()當它返回false時將提取上傳的文件,您可能已經實現了該部分)。

或者,如果您已經在 Servlet 3.0(Tomcat 7、Glassfish 3 等)上,那么您也可以只在 servlet 上使用@MultipartConfig注釋,以便您可以通過request.getPart("name")並繼續將request.getParameter("name")用於常規輸入字段。

也可以看看:

1) 為什么使用getParameter而不是getAttribute

2) 當驗證錯誤發生時,請求被重定向,這意味着發送了一個新的請求對象,您需要再次提供請求屬性。

與您在將操作分派到 JSP 時所做的相同。 如果你想傳遞參數,那么你應該在<form>標簽的屬性action中提供它。

似乎依賴於框架,但您可以嘗試。 請注意,在 JSP 中,如果您使用EL,您可以嘗試使用${param}來訪問參數,而如果您真的想通過 URL 傳遞它,則可以嘗試使用${attr}來訪問屬性,如果scriplets 的getParameter JSTL 上也有很好的藝術

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM