Извините, если у этого вопроса есть дубликаты в другом месте. Я искал много возможных релевантных ссылок, но просто не смог найти решение, чтобы решить проблему, с которой столкнулся.
У меня есть простая форма в jsp, которая, когда пользователь нажимает кнопку Отправить, генерирует Excel для пользователя, чтобы загрузить. Код формы приведен ниже: -
<form id="myform" class="form-horizontal" action="MyServlet" method="POST" onsubmit="startDownload(this)">
<div class="form-group">
<label class="control-label col-sm-offset-2 col-sm-2" for="userText">User Text:</label>
<div class="col-sm-5">
<input type="text" class="form-control" id="userText" name="userText" placeholder="Enter Text">
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-4 col-sm-5">
<button type="submit" id="submitBtn" class="btn"><i class="fa fa-download"></i> Generate File </button>
</div>
</div>
</form>
Во время отправки формы на странице jsp будет отображаться загрузчик, а когда страница запрашивает загрузку файла, она скрывает загрузчик. Я могу понять это, со ссылкой на этот пост: Включите кнопку отправки формы в ответ на загрузку файла . Функция onSubmit JavaScript выглядит следующим образом: -
function startDownload(form) {
var token = new Date().getTime();
form.token.value = token;
showLoading(); //to show the loader
var pollDownload = setInterval(function() {
if (document.cookie.indexOf("download=" + token) > -1) {
document.cookie = "download=" + token + "; expires=" + new Date(0).toGMTString() + "; path=/";
stopLoading(); //to hide the loader
clearInterval(pollDownload);
}
}, 500);
}
Проблема заключается в том, что когда я ввожу некоторые значения в форму поля ввода и нажимаю кнопку отправить, значение не передается сервлету. Когда я использую отладку для проверки переменной, она выдает 'null'. Код, который я использую для получения формы ввода в сервлете: -
String userText = request.getParameter("userText");
Но если я удалил функцию onsubmit, значение можно передать сервлету.
Могу ли я узнать, почему это так и где я делаю не так в кодах?
Большое вам спасибо за вашу помощь и время в продвинутом!