繁体   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