SpringMVC之ajax與表單 Post 數據提交差異小結


  最近在寫一個富文本框的后台數據服務的時候遇到一些關於 ajax 提交與 表單提交的比較特殊的案例,這里拿來跟大家分享,希望能讓大家有所啟發。

1. 首先是常見表單提交在SpringMVC的控制器中的代碼情況:

@Controller
public class MaterialController {

    @Autowired
    MaterialService materialService;

    @RequestMapping(value="/addArticle",method=RequestMethod.POST)
    public String saveArticle(AddArticleVO addArticleVO){
        materialService.saveArticle(addArticleVO);
        return "redirect:/articleList.html";
    }
}

  做過SpringMVC的應該都比較熟悉這樣的代碼,我這里想重點突出的是,在前端以表單提交的方式將數據過來后是沒辦法控制其下一個頁面的跳轉的,后台在不使用 jsp或velocity 這類引擎的時候,可采取上面的方式為該服務重定向一個新的html頁面。另外需要注意的是,切忌給該方法加上@ResponseBody的注釋,否則前端只會打印出重定向這條字條串指令。

2. 前端 ajax 提交數據到后台:

@Controller
public class MaterialController {

    @Autowired
    MaterialService materialService;

    @RequestMapping(value="/addImg",method=RequestMethod.POST)
    @ResponseBody
    public void saveImg(@RequestBody AddImgVO addImgVO){
        materialService.saveImg(addImgVO);
    }
}

  首先 @RequestBody 注解是一定要加的,否則這個服務沒辦法獲取到前台提交過來的任何數據。其次是@ResponseBody 注解,因為這里在圖片信息保存完畢之后是不主動再向前端提供任何數據的,如果不加這個注解會導致前端的這個 ajax 請求始終無法成功執行完,如果該請求帶有數據提交完畢頁面跳轉之類的響應事件,那么將永遠沒辦法觸發,頁面會一直卡在數據提交那個表單頁面,就好像一直在等待后台給它一個反饋一樣。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM