Как я могу проверить отправку запроса формы jsp на той же странице jsp?(ENCTYPE = "многочастному / форм-данных") - PullRequest
4 голосов
/ 09 августа 2011
<%
..... 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 для загрузки файлов будет находиться на той же странице выше в теге <% ..%>.

Как добавить проверку с оператором if, чтобы проверить, есть ли кнопка Отправитьщелкают или нет, другими словами, отправляется ли запрос на публикацию или нет.

Я следовал этому, http://www.java2s.com/Code/Java/JSP/SubmittingCheckBoxes.htm, но это не помогло, то есть для вызова другого файла JSP ("formAction".jsp ") не на той же странице.

if(request.getParameter("newFileName") != null) {

Это утверждение всегда дает нулевое значение.Я не знаю почему.

Примечание: это форма с этим атрибутом => enctype = "multipart / form-data"

Если я не добавлю оператор if, тогда файлызагружаются в первый раз, но в следующий раз, если я нажму кнопку перезагрузки или обновлю страницу, браузер предложит мне повторно отправить данные или повторно загрузить предыдущие файлы.Я надеюсь, что вы поняли проблему.Если есть какая-то путаница, чтобы понять проблему, пожалуйста, прокомментируйте.

Может кто-нибудь дать намек / решение?

1 Ответ

8 голосов
/ 09 августа 2011

При использовании multipart/form-data запрос был отправлен в кодировке, отличной от стандартной application/x-www-form-urlencoded кодировки, на которую опирается getParameter() и операторы. Вот почему они все возвращают 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. Запись исходного кода Java в файл JSP - это рецепт для проблем с обслуживанием. Вместо этого отправьте форму полноценному сервлету и просто реализуйте метод doPost(). В сервлете вы можете свободно писать код Java без учета всего этого HTML.

...