JAX-RS 中日期的 @DefaultValue:now() 和 MAX

2024-01-29

我有一个查询参数如下:

@GET
public Response myFunction(@QueryParam("start") final LocalDate start, @QueryParam("end") final LocalDate end) { ... }

为此,我创建了一个ParamConverter<LocalDate>它将字符串转换为日期,反之亦然。

现在我想用@DefaultValue注释来声明默认值。我有两个特殊的默认值:

  • 今天(为了start)
  • 最大值/无穷大(对于end)

是否可以使用@DefaultValue对此的注释?如何?


Yes, @DefaultValue https://javaee.github.io/javaee-spec/javadocs/javax/ws/rs/DefaultValue.html在这种情况下可以使用值:

@GET
public Response foo(@QueryParam("start") @DefaultValue("today") LocalDate start,
                    @QueryParam("end") @DefaultValue("max") LocalDate end) { 

    ...
}

Your ParamConverterProvider https://javaee.github.io/javaee-spec/javadocs/javax/ws/rs/ext/ParamConverterProvider.html and ParamConverter https://javaee.github.io/javaee-spec/javadocs/javax/ws/rs/ext/ParamConverter.html实现可以是这样的:

@Provider
public class LocalDateParamConverterProvider implements ParamConverterProvider {

    @Override
    public <T> ParamConverter<T> getConverter(Class<T> rawType, Type genericType, 
                                              Annotation[] annotations) {

        if (rawType.getName().equals(LocalDate.class.getName())) {

            return new ParamConverter<T>() {

                @Override
                public T fromString(String value) {
                    return parseString(value, rawType);
                }

                @Override
                public String toString(T value) {
                    return ((LocalDateTime) value)
                            .format(DateTimeFormatter.ISO_LOCAL_DATE);
                }
            };
        }

        return null;
    }

    private <T> T parseString(String value, Class<T> rawType) {

        if (value == null) {
            return null;
        }

        if ("today".equalsIgnoreCase(value)) {
            return rawType.cast(LocalDate.now());
        }

        if ("max".equalsIgnoreCase(value)) {
            return rawType.cast(LocalDate.of(9999, 12, 31));
        }

        try {
            return rawType.cast(LocalDate.parse(value, 
                    DateTimeFormatter.ISO_LOCAL_DATE));
        } catch (Exception e) {
            throw new BadRequestException(e);
        }
    }
}

如果由于某种原因您需要参数名称,您可以从Annotation array:

Optional<Annotation> optional = Arrays.stream(annotations)
        .filter(annotation -> annotation.annotationType().equals(QueryParam.class))
        .findFirst();

if (optional.isPresent()) {
    QueryParam queryParam = (QueryParam) optional.get();
    String parameterName = queryParam.value();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JAX-RS 中日期的 @DefaultValue:now() 和 MAX 的相关文章

  • Java中如何动态添加charsequence[]中的数据?

    初始化的一种方法charsequence is charsequence item abc def 但我不想以这种方式初始化它 有人可以建议其他方式吗 比如我们初始化的方式string arrays 首先 修复变量声明 charsequen
  • 使用 Nginx 时缺少 HTTP 状态代码名称

    我正在使用 Nginx 将所有 HTTP 请求重定向到 HTTPS 在我的 Spring Boot 应用程序中 这是我正在使用的 nginx 配置 通过它我可以将所有请求重定向到 Https 但是当我这样做时 我得到了状态码返回正确 但没有
  • 运行单个 Java 线程的双核 CPU 利用率[重复]

    这个问题在这里已经有答案了 可能的重复 多线程 Java 应用程序能否很好地利用多核机器 https stackoverflow com questions 1649402 would a multithreaded java applic
  • 具有最小刻度的图表的漂亮标签算法

    我需要手动计算图表的刻度标签和刻度范围 我知道漂亮刻度的 标准 算法 参见 我也知道这个Java实现 http erison blogspot nl 2011 07 algorithm for optimal scaling on char
  • Maven 2 未运行 Junit 4 测试

    我在确保运行 Junit4 测试时遇到问题 同样的问题也被报告在https stackoverflow com questions 2021771 sort newest sort top https stackoverflow com q
  • 如何让 HttpClient 返回状态码和响应正文?

    我试图让 Apache HttpClient 触发 HTTP 请求 然后显示 HTTP 响应代码 200 404 500 等 以及 HTTP 响应正文 文本字符串 重要的是要注意我正在使用v4 2 2因为大多数 HttpClient 示例都
  • 到底什么是哈希冲突

    HashMap 中的哈希冲突或哈希冲突并不是一个新主题 我遇到过几个博客和讨论板 以模糊且详细的方式解释如何产生哈希冲突或如何避免它 我最近在一次采访中遇到了这个问题 我有很多事情要解释 但我认为很难准确地给出正确的解释 抱歉 如果我的问题
  • 在 SWT 中单击鼠标触发事件?

    在SWT中 对于MouseListener接口 可用的方法有mouseUp mouseDown and mouseDoubleClick 如何根据用户点击触发事件 我们可以通过结合来做到这一点mouseUp and mouseDown 但没
  • 竞争性编码 - 以最低成本清除所有级别:未通过所有测试用例

    当我遇到这个问题时 我正在一个竞争性编码网站上解决问题 问题指出 游戏中有 N 个关卡和 M 种可用武器 等级编号从 0 到 N 1 武器编号从 0 到 M 1 您可以按任意顺序清除这些级别 在每个关卡中 需要这些 M 武器的某些子集才能通
  • Tomcat - 多个 webapps 文件夹

    是否可以有多个文件夹来放置要部署的应用程序 这些是如何定义的 是否可以将一个文件夹限制为仅是 domain com 的应用程序 而不是其他域 Thanks 看一眼conf server xml
  • 整数与 int 比较

    我是新来的java 我现在正在学习非原始整数类型java 我知道以下比较无效并引发编译错误 String str c Char chr c if str chr return true 上面的代码片段给了我 Test java lineNu
  • Java检测鼠标长按

    如果用户按下 JList 组件超过 3 秒 有什么方法可以捕获事件吗 我发现困难的部分是即使在用户松开鼠标左键之前也需要触发事件 这可以通过 mousePressed 和 mouseReleased 组合轻松完成 您可以在 mouseDow
  • java:如何设置全局线程ID?

    是否有可能为线程设置唯一ID 在分布式系统中 线程是在许多不同的机器上创建的 例如通过 RMI 我需要它来创建日志消息 根据我的研究 我知道可以使用 log4j mdc ndc 来完成 但只能在单线程中完成 我的问题是 在创建线程时必须设置
  • 有界通配符相关的编译器错误

    我想知道这段代码有什么问题 Map 但我试图说得更具体 这个问题在这个旧的 Apache 线程 ht
  • 读取不失真的灰度 PNG 图像文件

    我需要读取和处理大量的灰度 PNG 文件 我的意思是 如果它们在 Photoshop 或 GIMP 中打开 则图像模式为灰度 而不是具有灰度值的 RGB 图像 ImageIO 似乎没有实现这一点 它似乎将所有图像文件视为 sRGB 这会破坏
  • Elasticsearch NodeBuilder 与 TransportClient

    对于其他 Elasticsearch 开发人员来说 这可能是一个非常简单 而且愚蠢 的问题 这两者之间有什么区别 我正在从 Java Web 应用程序连接到远程 Elasticsearch 服务器 到目前为止我一直在使用 Transport
  • java.lang.ClassCastException: [B 无法转换为 java.lang.String

    我编写了一个带有字段 LoginId 和密码的实体类 我使用 AES ENCRYPT 加密密码并将其存储在数据库中 我只想检索已解密的密码 所以 我使用 AES DECRYPT 使用本机查询是在 OPen JPA 2 0 中 我写的查询是
  • Visual Studio Code - Java 类路径不完整。只会报告语法错误

    在使用 python 获得了丰富的经验之后 我正在使用 java 迈出第一步 我正在运行的脚本是一个简单的 Java Swing Gui 它可以从命令行和 VS Code 中正常编译和运行 为了设置 java 调试环境 我使用 github
  • 删除Java中重载的方法

    有2个重载方法 这些方法中的每一个都将一种类型的列表转换为不同类型的列表 但第一种方法使用比较器 class SomeClass public static
  • 在没有 ODBC 的情况下从 Java 操作 Access 数据库

    我想从我的 Java 项目操作 Microsoft Access 数据库 accdb 或 mdb 文件 我不想使用 Microsoft 的 JDBC ODBC Bridge 和 Access ODBC 驱动程序 因为 JDBC ODBC 桥

随机推荐

  • CSS 垂直对齐:中间在 IE7 中不起作用

    我这里有这段代码 div class pics2 div style display block width 225px height 200px this div is generated via jQuery Plugin div st
  • 从 .json URL 获取数据并使用 Javascript/JQuery 将其显示在 HTML 中

    我正在尝试从以下位置获取 json 数据 http api dailymile com entries json http api dailymile com entries json然后我希望在表格中显示这些数据 当 json 链接指向我
  • 使用 PHP 检查值是否存在于逗号分隔的字符串中[重复]

    这个问题在这里已经有答案了 我需要检查我的 id 是否存在于逗号分隔的字符串中 我的字符串保存为 1 2 3 4 10 在数据库中 我努力了 HiddenProducts array sqlvalue if in array 2 Hidde
  • 在 Fancybox 内输入

    我在使用 Fancybox 时遇到了一个非常奇怪的问题 我似乎无法获取 Fancybox 中显示的输入的 val 它们的值为 然而 Fancybox 外部的输入是有效的 My code
  • 在Python数据类中创建唯一的ID

    我的 python 数据类需要一个唯一的 无符号整数 id 这是非常相似 to 这个帖子 https stackoverflow com questions 58101476 how to create a unique and incre
  • 如何在运行时从下载的 jar 文件加载未知类?

    我正在构建一个客户端服务器应用程序 在运行时 客户端应用程序从服务器应用程序加载 jar 文件并存储它 我将客户端和服务器应用程序都作为 jar 文件运行 我现在想要加载这个下载的 jar 文件中包含的类 例如 我有一个接口 A 和一个实现
  • 如何在python 2.7.6中导入_ssl?

    我的http服务器基于带有Python 2 7 6的BaseHTTPServer 现在我希望它支持ssl传输 即所谓的https 我已经安装了 pyOpenSSL 并重新编译了带有 ssl 支持的 python 源代码 当我尝试时它确实有效
  • 在 DynamoDB 中,如何使用 Java 将元素附加到列表字段

    我在 DynamoDB 中有一条记录 其中包含一个名为 imageData 的字段 该字段是一个项目列表 每个项目都是一个字典 包含键值对的映射 如何将新项目追加到以下记录中的列表中 ssid abcd imageData I tried
  • 结构体数组成员的默认值[重复]

    这个问题在这里已经有答案了 可能的重复 在 C 类中初始化数组和可修改左值问题 https stackoverflow com questions 6647038 intitialzing an array in a c class and
  • 如何合并来自不同输入值的数组?

    有许多具有相同名称和相同类别但具有不同值的文本字段 每个输入都有 1 个按钮 我通过单击每个特定按钮来获取每个字段的值 与 JavaScript 一起使用 我可以将该值放入数组中 但数组不会合并 如果我单击第一个按钮 特定输入字段值将放入数
  • 在 SQL 事件探查器中显示行计数

    是否可以在 SQL Server Profiler 中显示 行计数 列 例如 有 CPU 和 Duration 列 但它可以显示查询返回多少行吗 使用 RowCounts 列怎么样
  • Python 相当于 ruby​​ 的 StringScanner?

    是否有与 ruby 等效的 python 类StringScanner 类 http ruby doc org core classes StringScanner html 我可以将一些东西组合在一起 但如果这已经存在 我不想重新发明轮子
  • Iron 路由器身份验证控制器

    我想知道是否有人可以演示如何在路由器控制器类上使用全局 之前 操作来处理用户身份验证并根据结果显示适当的路由 模板 我的用例是让 AppController 充当身份验证防火墙 并在用户注销时阻止任何子控制器操作 例如 Create a p
  • PIG 中的 GROUP 和 COGROUP 有什么区别?

    我知道 Group 不能处理多个元组 因此我们在 PIG 中有 COGROUP 然而 今天检查时 GROUP 命令对我有用 我正在使用 PIG 0 12 0 我的命令和输出如下 grunt gt grpvar GROUP C by 2 B
  • 找不到有角度的日期管道

    我想在 HTML 中使用 DatePipe timeslot date 但我得到了错误 error NG8004 No pipe found with name date 我的 app module ts 导入公共模块 import Com
  • 无法添加配置转换

    I have 创建了构建配置 http www tomot de en us article 5 asp net how to use web config transforms to replace appsettings and con
  • Scala 中更好的字符串格式

    由于有太多的争论 String format很容易变得太混乱 有没有更强大的方法来格式化字符串 就像这样 This is number string format number gt 1 或者由于类型问题这是不可能的 format我认为需要
  • 在 SQL 中,如何生成 5!56 的每种可能的唯一组合?

    我有一个表 元素 其中有一列 数字 类型为 SMALLINT 其中包含数字 1 到 56 如何使用 SQL 语句生成从 1 到 56 的每种可能组合的 5 个数字的唯一集合 在 APL 编程语言 中 一个简单的二元函数 5 56 就可以解决
  • 有什么方法可以跳过 php 中包含文件的致命错误吗?

    如果我将一个文件包含到 php ini 中如果该 php 中有任何致命错误 那么有什么方法可以跳过该错误 我需要包含此 somefile php 文件 它可能会返回致命错误 对于某些主机 我想为那些主机跳过这个文件 请给我建议 有了这个 您
  • JAX-RS 中日期的 @DefaultValue:now() 和 MAX

    我有一个查询参数如下 GET public Response myFunction QueryParam start final LocalDate start QueryParam end final LocalDate end 为此 我