簡體   English   中英

如何傳遞文本框值以及對spring mvc控制器的作用是什么?

[英]How to pass textbox values and what was the action to spring mvc controller?

我正在從事Spring MVC控制器項目。

  • 第一個按鈕是INSERT 單擊INSERT按鈕后,我將在INSERT按鈕下面顯示三個文本框。 第一個文本框是datacenter ,第二個文本框是node ,第三個文本框是data
  • 第二個按鈕是UPDATE 單擊“更新”按鈕后,我將在“更新”按鈕正下方的三個文本框上方顯示相同的內容。
  • 第三個按鈕是DELETE 單擊刪除按鈕后,我僅在刪除按鈕下方顯示一個文本框。 在這個文本框中將是node
  • 第四個按鈕是PROCESS 單擊“過程”按鈕后,我將在“過程”按鈕下方顯示四個文本框。 在此第一個文本框將是datacenter ,第二個文本框將是node ,第三個文本框將是data ,第四個文本框將是conf

最后,我將按下提交按鈕。

這是我的jsfiddle ,其中包含我上面討論的所有內容。

問題陳述:-

現在,我需要做的是,假設我先單擊“ Insert按鈕,它將在“插入”按鈕下面提供三個文本框,然后在這三個文本框中鍵入一些值,然后單擊“ Submit按鈕,該按鈕將傳遞所有這三個文本框值以及我對控制器方法testOperations操作(意味着是INSERT或UPDATE或DELETE或PROCESS)。 因此,在這種情況下,如果我在數據中心中鍵入dc1 ,在節點中輸入hello ,在數據中輸入world ,那么它應該將所有這三個值傳遞給我的控制器方法,但還應該將conf值作為null bcoz傳遞給該文本框(對於“ Insert按鈕不存在)因此,當我們按下Submit按鈕時,它將conf值作為null傳遞給控制器​​方法。

同樣,如果單擊“刪除”按鈕,則它將僅在“刪除”按鈕下方顯示一個文本框,一旦單擊“提交”按鈕,則它應將“刪除”值作為操作傳遞,數據中心值應為null,節點值作為我們鍵入的實際值在框中,數據值也應該為null,而conf值也應該為null。對於其他情況也是如此。

以下是我在Controller代碼中的方法-

   @RequestMapping(value = "testOperation", method = RequestMethod.GET)
    public Map<String, String> testOperation() {
        final Map<String, String> model = new LinkedHashMap<String, String>();
        return model;
    }

    @RequestMapping(value = "testOperation", method = RequestMethod.POST)
    public Map<String, String> testOperations(@RequestParam String action,
                                              @RequestParam String datacenter, 
                                              @RequestParam String node, 
                                              @RequestParam String data,
                                              @RequestParam String conf) {
        final Map<String, String> model = new LinkedHashMap<String, String>();

        System.out.println(action);
        System.out.println(datacenter);
        System.out.println(node);
        System.out.println(data);
        System.out.println(conf);

        return model;
    }

但是無論如何,只要我在輸入一些值后按下提交按鈕,就會給我一個異常,例如Bad Request Exception。而且我知道為什么嗎? 因為假定在這三個文本框中鍵入值后為Insert情況,所以我按了Submit按鈕,則未設置conf值,並且我的控制器方法使用conf參數,因此這是它引發異常的原因。為了解決此問題,我可以刪除conf參數,但是對於Process案例,我需要它。

所以有什么辦法,我可以為那些不需要某些按鈕的文本框傳遞空值來避免這個問題?

您有兩種選擇來解決您的問題。

選項1)不需要所有對所有三個動作都必需的參數,即:

@RequestParam(required = false,defaultValue = null)字符串配置

如果將“ required = false”添加到所有非強制性參數,則不會獲得異常

選項2)為每個操作設置不同的控制器方法,並使每個方法僅采用指定操作所需的參數:

 @RequestMapping(value = "insertOperation", method = RequestMethod.POST)

    public Map<String, String> insertOperation(
        @RequestParam String action,
        @RequestParam String datacenter, 
        @RequestParam String node, 
        @RequestParam String data
    ) {}

和:

@RequestMapping(value = "updateOperation", method = RequestMethod.POST)
        public Map<String, String> updateOperation(@RequestParam String action,
                                                  @RequestParam String datacenter, 
                                                  @RequestParam String node, 
                                                  @RequestParam String data,
                                                  @RequestParam String conf,
                                                  ) {}

祝好運!

暫無
暫無

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

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