首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何覆盖RequestParam的默认行为?

如何覆盖RequestParam的默认行为?
EN

Stack Overflow用户
提问于 2020-02-13 19:05:53
回答 1查看 449关注 0票数 1

我有一个Rest API,我不想强迫客户端发送请求参数,我有将近400个api方法,我不想把所有参数都设置为"required = false“

我想覆盖Spring RequestParam的默认行为。我想将RequestParam接口的"required“属性的默认值设置为"false”。

有什么方法可以覆盖它吗?如果我不能或者这不是一个最佳实践,有没有办法解决上面的问题。

EN

回答 1

Stack Overflow用户

发布于 2020-02-13 19:59:14

如上所述,您不能更改默认值。

一些可能的解决问题的方法:

  • 将参数标记为可选:

代码语言:javascript
运行
复制
@RequestMapping(...)
public String url(@RequestParam("key") Optional<String> keyValue```){
}

代码语言:javascript
运行
复制
@RequestMapping(...)
public String url(@RequestParam("key") @Nullable String keyValue){
}

(带有“可空”名称部分的任何注解,即javax.annotation.Nullable)

  • 根本不使用RequestParam注释-而是使用Pojo类进行参数绑定:

代码语言:javascript
运行
复制
@RequestMapping(...)
public String url(PojoRequestParameters parameters) {
}

//...

public class PojoRequestParameters {
        private String key;

        public String getKey() {
            return key;
        }

        public void setKey(String key) {
            this.key = key;
        }
    }

如下所示:https://www.baeldung.com/java-reflection-change-annotation-params

  • 编写(并注册)您自己的批注,并使用它而不是RequestParam (不可能在运行时为RequestParam方法批注值创建别名(疯狂且不能用于方法批注)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60206356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档