【问题标题】:how to capture some parameters using @RequestParam using spring mvc?如何使用spring mvc使用@RequestParam捕获一些参数?
【发布时间】:2020-11-11 09:01:43
【问题描述】:

假设点击了一个超链接并使用以下参数列表 myparam1=myValue1&myparam2=myValue2&myparam3=myValue3 触发了一个 url。现在如何在 spring mvc 中使用 @RequestParam 捕获一些参数?

我的要求是我必须捕获一些参数并构建对服务器的请求。我可以将所有请求参数设为可选并在需要时使用吗?

假设我想使用前两个参数并想忽略第三个。 例如。 http://localhost:8080/api?myparam1=myValue1&myparam2=myValue2 只是没有在请求中提供第三个参数。

在下一个场景中,我想使用第二个和第三个,并想忽略第一个参数。 例如。 http://localhost:8080/api?myparam2=myValue2&myparam3=myValue3 只是没有在请求中提供第一个参数。

在另一种情况下,我不想使用任何请求参数。 例如。 http://localhost:8080/api 只是没有在请求中提供任何参数。 有什么办法可以做到这一点?请帮忙...!

【问题讨论】:

    标签: spring spring-boot http-request-parameters get-mapping


    【解决方案1】:

    您可以像这样捕获Map 中的所有参数(关键是参数的名称):

    public void requestAllParams(@RequestParam Map<String, String> params)
    

    您还可以像这样使用Optional 捕获可选参数:

    public void requestParamOptional(@RequestParam(required=false) Optional<String> param)
    

    【讨论】:

      【解决方案2】:

      @RequestParam 的参数默认是必需的。可以标记为不需要:

      @GetMapping
      public ResponseEntity<Object> aMapping(@RequestParam String myparam1, @RequestParam String myparam2, @RequestParam(required = false) String myparam3) {
          // response
      }
      

      【讨论】:

      • 这里我们将前两个参数设为强制,我只想将所有参数设为可选。我即兴提出了我的查询。
      猜你喜欢
      • 2014-04-19
      • 2020-12-06
      • 2013-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多