0

В событии нажатия кнопки отправки я вызываю функцию js для получения ввода пользователя и отправки на сервер для обработки. В то же время мне нужно отправить форму со всеми заполненными данными. Я положил <button type="button"> вместо <button type="submit">, как если бы я положил 'type' as submit, он получил ошибку. Там js функционирует точно, но значения полей не выбираются методом контроллера.Функция отправки формы и javascript, вызывающая кнопку отправки нажатием кнопки весной mvc?

Как это сделать только с одной кнопкой? Вот мой метод обработчик в контроллере:

@RequestMapping(value = "/add_package") 
    public 
    @ResponseBody 
    ModelAndView addPackage(@ModelAttribute("newPackage") Package newPackage, 
          HttpServletRequest request) { 

     LOGGER.error("package objct {}",newPackage);// here I am getting objects with null values !! 

     String s = request.getParameter("test"); 
     LOGGER.trace("test val = {}", s); 

     ObjectMapper objectMapper = new ObjectMapper(); 
     List<Package> cats = null; 
     String pkgName = newPackage.getPackName(); 
     try { 

      ... 
     } catch (Exception e) { 
      .. 
      LOGGER.error("error in package add {}", e.getMessage()); 
     } 

     return new ModelAndView(new RedirectView("add")); 
    } 

Вот СПЯ код кнопки:

<form:button type="button" class="btn btn-success" id="btnAddNewPkg" onclick="contentPackge()"><span class="glyphicon glyphicon-plus"></span> 

Добавить

+0

вы можете разделить функции JS? Как вы общаетесь с контроллером? используя ajax? или напрямую подать заявку? – brk

+0

@ user2181397 Я использую ajax. Вот. '$ .ajax ({ url:" https: // localhost: 8443/admin/packages/add_package ", данные: {" test ": JSON.stringify (jsonObj)}, // type:" POST " , Успех: функция (результат) { } }); ' – SMash

+0

попытайтесь обмануть URL-адрес кода и поместите URL:" ./ add_package/" –

ответ

0

Я не думаю, что вам нужно пройти url в https://localhost:8443/admin/packages/add_package вместо только /add_package будет достаточно.

Кроме вы можете также необходимо предоставить url-pattern

Во-вторых для ответа AJAX Я не знаю, почему вы снова нужно ModelAndView. Вы можете изучить redirect Недвижимость

Если вы используете button = "submit", то вам нужно использовать event.preventDefault(), чтобы остановить поведение по умолчанию. Я думаю, использование button="button" будет работать нормально

+0

Этот метод обработчика используется для отправки сведений о новом элементе в базу данных. И поэтому я возвращаю ModelAndView, чтобы предоставить ту же страницу просмотра, которая сопоставляется с шаблоном url add.просто мне нужно, чтобы оба вызывали эту функцию для получения некоторых значений и отправки формы на одно и то же событие нажатия кнопки – SMash

0

См., Что вы должны отправить форму после того, как ajax был успешно вызван, что находится в функции успеха ajax, вы должны вручную отправить форму с помощью функции jquery.submit(). Другими словами, t work.because может нарушить функцию ajax. Или вы можете иметь функцию задержки времени после нажатия кнопки отправки.

это неприятный способ сделать это й предпочитаете вы вызываете функцию представить в Ajax успеха и сохранить тип кнопки в качестве кнопки

$("#target").submit(function(event) { 
    alert("Handler for .submit() called."); 
    event.preventDefault();showloadingif(); 
    setTimeout(function(){ $("#formId").submit(); }, 3000);   
}); 
+0

Итак, мне нужно изменить тип кнопки для отправки? Если вы можете показать, как использовать эту функцию задержки времени? – SMash

+0

Можете ли вы уточнить функцию showloadingif(); что здесь? – SMash