[英]jsp:getProperty null when enctype=“multipart/form-data” attribute is used
[英]How can i check jsp form request submit in same jsp page? (enctype=“multipart/form-data”)
<%
..... code to check request is submitted or not ...
%>
<form method="post" action="" name="uploadform" enctype="multipart/form-data">
<table >
<tr>
<td>Select up to 3 files to upload</td>
</tr>
<tr>
<td>
<input type="hidden" name="newFileName" value="newUploadedFileName1">
<input type="file" name="uploadfile" >
</td>
</tr>
<tr>
<td align="center">
<input type="submit" name="Submit" value="Upload">
<input type="reset" name="Reset" value="Cancel">
</td>
</tr>
</table>
</form>
上傳文件的jsp post請求代碼將位於<%..%>標記中的同一頁面中。
如何使用if語句添加檢查以檢查是否單擊了“提交”按鈕,換句話說,是否發送了發布請求。
我按照這個, http://www.java2s.com/Code/Java/JSP/SubmittingCheckBoxes.htm,但它沒有幫助,那就是調用不同的jsp文件(“formAction.jsp”),而不是在同一頁面。
if(request.getParameter("newFileName") != null) {
此語句始終為null值。 我不知道為什么。
注意:它是具有此屬性的表單=> enctype =“multipart / form-data”
如果我沒有添加任何if語句,那么文件將首次上載,但下次如果我單擊重新加載按鈕或刷新頁面,瀏覽器會提示我重新發送數據或重新上載以前的文件。 我希望你能理解這個問題。 如果有任何疑惑,請了解問題,請發表評論。
誰能提供一些提示/解決方案?
使用multipart/form-data
,請求的編碼方式與getParameter()
和consorts所依賴的標准application/x-www-form-urlencoded
編碼不同。 這就是為什么他們都返回null
。 在能夠確定提交的值之前,您需要將multipart/form-data
請求解析為合理的對象。 為此,通常使用Apache Commons FileUpload或request.getParts()
。 有關詳細信息,請查看此答案 。
或者,您也可以檢查請求方法。 正常請求(鏈接,書簽等)始終是GET。 提交上傳文件的表單始終是POST。
if ("POST".equalsIgnoreCase(request.getMethod())) {
// Form was submitted.
} else {
// It was likely a GET request.
}
但這在JSP中沒有任何意義。 在JSP文件中編寫原始Java代碼是導致維護問題的原因。 而是將表單提交給一個完整的servlet,然后實現doPost()
方法。 在servlet中,您可以自由編寫Java代碼,而無需考慮所有HTML。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.