簡體   English   中英

Spring MVC HttpServletRequest請求:單擊了哪個按鈕

[英]Spring MVC HttpServletRequest request: which button clicked on

我有一個帶有三個按鈕的表單,一個按鈕用於保存,更新和查詢,但是我想在服務器端知道用戶單擊了什么按鈕。 我嘗試使用request.getParameter(“ action”)和request.getAttribute(“ action”),但它們都返回null。 有什么辦法可以在服務器上獲取此信息,也許我可以在會話中存儲“操作”值? 如果是這樣,我如何創建和存儲會話變量?

<button class="btn" value="save"  id="action"></button>

<button class="btn" value="update"  id="action"></button>

<button class="btn" value="query"  id="action"></button>

基本上,我試圖避免重新發布到服務器。 我知道我想使用POST / redirect / GET模式,但是我的方法將不支持重定向,即使更改並且表單有錯誤,我也將無法返回服務器驗證。

調節器

@RequestMapping(value = "crime_registration_save.htm", method = RequestMethod.POST)
    public ModelAndView handleSave(@Valid @ModelAttribute Crime crime,HttpServletRequest request,
            HttpServletResponse response,BindingResult result, ModelMap m, Model model) throws Exception {


        String action = request.getParameter("action");

    logger.info("The requested action is "+ action);
        if (result.hasErrors()) {

            logger.debug("Has Errors In crime_registration_save");
            model.addAttribute("dbcriminals", myCriminalList);
            model.addAttribute("dbvictims", myVictimList);
            model.addAttribute("status", myStatusList);
            model.addAttribute("crimeCategory", myCrimeCategoryList);
            model.addAttribute("crimeLevel", myCrimeLevelList);
            model.addAttribute("officers", myOfficerList);

            model.addAttribute("victimList", crime.getVictims());
            model.addAttribute("criminalList", crime.getCriminals());

            model.addAttribute("crimeTypeList",
                    crimeTypeManager.getCrimeTypeList(crime.getOffenceCatId()));
            model.addAttribute("icon", "ui-icon ui-icon-circle-close");
            model.addAttribute("results", "Error: Unable to Save Record!");

            return new ModelAndView("crime_registration");
        }
        logger.debug("No errors going to preform save");

        int crimeRecNo;

        crimeRecNo = crimeManager.saveCrime(crime);

        model.addAttribute("dbcriminals", myCriminalList);
        model.addAttribute("dbvictims", myVictimList);
        model.addAttribute("status", myStatusList);
        model.addAttribute("crimeCategory", myCrimeCategoryList);
        model.addAttribute("crimeLevel", myCrimeLevelList);
        model.addAttribute("officers", myOfficerList);
        model.addAttribute("save", "disabled");
        model.addAttribute("victimList", crime.getVictims());
        model.addAttribute("criminalList", crime.getCriminals());

        model.addAttribute("crimeTypeList",
                crimeTypeManager.getCrimeTypeList(crime.getOffenceCatId()));
        model.addAttribute("crimeRecNo", crimeRecNo);
        model.addAttribute("crimeRecordNoStatus", "true");
        model.addAttribute("icon", "ui-icon ui-icon-circle-check");
        model.addAttribute("results", "Record Was Saved");



        return new ModelAndView("crime_registration");
    }

jQuery的

function submitPage(urlMapping,method,action) {
        alert(urlMapping);
        document.getElementById("crime_registration").action = urlMapping;
        document.getElementById("crime_registration").target = "_self";
        document.getElementById("crime_registration").method = method;
        document.getElementById("crime_registration").submit();
        $('#action').val(action);

        alert($('#action').val());
        return false;
    }

表單不是請求屬性,而是參數。

使用提交,為其命名,然后使用該名稱檢索參數。

<input type="submit" class="btn" value="save" name="action" />

String button = request.getParameter("action");

如果不是形式,則需要一些JavaScript,但您的問題暗示確實如此。

這里的解決方案是有一個名為action的隱藏變量,單擊按鈕時,您可以使用clicked按鈕的值更新該隱藏變量,然后提交表單。

例如:

<form action="" method="post" name="myform">
    <input type="hidden" name="action" />

    ....

    <button class="btn" value="save"  id="action" onclick="submitForm(this)"></button>
    <button class="btn" value="update"  id="action" onclick="submitForm(this)"></button>
    <button class="btn" value="query"  id="action" onclick="submitForm(this)"></button>
</form>

然后

<script>

    function submitForm(btn){
        var frm = document.myform;

        frm.action.value = btn.value;
        frm.submit();
        return false;

    }

</script>

您需要添加到按鈕中的就是屬性type =“ submit”和屬性名稱=“ parametername”。 然后,按鈕標簽的作用類似於Submit類型的輸入,其優點是該值可以不同於顯示文本或您放置在按鈕標簽內的任何內容。

如果您想使用ajax提交表單,我現在將使用jquery ajaxform插件來處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM