解決刷新jsp頁面重復提交數據的問題

假如我們需要使用 controller層的 addsave方法向 worklist頁面傳遞參數,jsp 頁面接收參數的方式如下圖:

<span style="color: red">${info}</span>

controller層代碼:

@RequestMapping(value = "addsave")
    public String addsave(Workorder workorder, Model model) {
        workorder.setCreateDate(new Date());
        if (workorderService.add(workorder)) {
            model.addAttribute("info", "保存成功"); //提示信息的傳值
        }
        model.addAttribute("workorder", workorderService.getWorkorderList()); //獲取列表的傳值
        return "worklist";
    }

然后我們運行:

看起來似乎沒有問題,但是我們刷新下這個頁面再看看:

我們發現頁面又重復提交了一遍數據,那么如何解決這個問題呢?

下面,我們先將 controller層的代碼修改一下:

@RequestMapping(value = "addsave")
    public String addsave(Workorder workorder, Model model) {
        workorder.setCreateDate(new Date());
        if (workorderService.add(workorder))
            model.addAttribute("info", "保存成功");  //提示信息的傳值
        return "redirect:worklist";
    }

    @RequestMapping("worklist")
    public String worklist(Model model) {
        model.addAttribute("workorder", workorderService.getWorkorderList());  //獲取列表的傳值
        return "worklist";
    }

這里我們直接加了一個方法,用來返回 worklist頁面,我們再運行一下看看效果:

可以發現我們添加列表成功,刷新頁面也不會重復傳值,但是 info的參數保存成功并沒有在頁面顯示,同理 Model換成 HttpServletRequest形參也是不行的(親測無效)。

那么我們應該怎么解決 info傳遞問題呢?

答: 使用 RedirectAttributes形參

@RequestMapping(value = "addsave")
    public String addsave(Workorder workorder, RedirectAttributes redirectAttributes) {
        workorder.setCreateDate(new Date());
        if (workorderService.add(workorder))
            redirectAttributes.addFlashAttribute("info", "保存成功");  //提示信息的傳值
        return "redirect:worklist";
    }

    @RequestMapping("worklist")
    public String worklist(Model model) {
        model.addAttribute("workorder", workorderService.getWorkorderList());  //獲取列表的傳值
        return "worklist";
    }

再次運行頁面:

傳值成功!同時,刷新頁面info的值保存成功也會消失。

完美!!

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Swift1> Swift和OC的區別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,136評論 1 32
  • AngularJS是什么?AngularJs(后面就簡稱ng了)是一個用于設計動態web應用的結構框架。首先,它是...
    200813閱讀 1,632評論 0 3
  • iOS網絡架構討論梳理整理中。。。 其實如果沒有APIManager這一層是沒法使用delegate的,畢竟多個單...
    yhtang閱讀 5,251評論 1 23
  • 對于java中的思考的方向,1必須要看前端的頁面,對于前端的頁面基本的邏輯,如果能理解最好,不理解也要知道幾點。 ...
    神尤魯道夫閱讀 829評論 0 0
  • 小顧和末末的故事很甜蜜的繼續下去了,又有無數懷春少女“國欠體”即將出現。這篇文大概會是一個劇評叭,畢竟看完了甜甜的...
    拾叁點閱讀 169評論 0 2