0

在提交按鈕單擊事件中,我調用了一個js函數來獲取用戶的輸入併發送到服務器端進行處理。同時,我需要提交填寫完整數據的表單。我把<button type="button">而不是<button type="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")); 
    } 

下面是按鈕的JSP代碼:

<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「, data:{」test「:JSON.stringify(jsonObj)}, // type:」POST「 , 成功:功能(結果){ } });' – SMash

+0

嘗試udpate代碼的URL部分,並把網址:「./Add_package /」 –

回答

0

我不認爲你需要通過url作爲https://localhost:8443/admin/packages/add_package,而不是隻/add_package就足夠了。

除了您可能還需要爲Ajax響應提供url-pattern

其次,我不知道爲什麼你需要再次ModelAndView。您可以探索redirect屬性

如果您使用button =「submit」,那麼您需要使用event.preventDefault()來停止默認行爲。我猜想使用button="button"將工作正常

+0

此處理程序方法用於向數據庫提交新項目的詳細信息。爲什麼我返回一個ModelAndView是爲了提供與「添加」url模式映射的相同的視圖頁面。簡單地說,我需要發生這兩個調用這個函數獲取一些值和提交表單在同一個按鈕單擊事件 – SMash

0

看到你應該提交表單後,已成功調用ajax ajax你應該手動提交表單使用jquery.submit()函數。其他明智它贏得'因爲它可能會破壞ajax的功能,或者您可以在點擊提交按鈕後有延時功能。

這是喜歡你打電話。我在阿賈克斯成功提交功能,並保持按鈕類型按鈕

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

所以,我需要改變按鈕類型提交?如果你可以請示範如何使用這個延時功能'? – SMash

+0

您能否詳細說明函數showloadingif();這裏有什麼? – SMash