Caused by: jakarta.websocket.DeploymentException: ......that did not have a @PathParam annotation

这个异常是由于在 WebSocket 的 onOpen 方法中存在一个类型为 java.lang.String 的参数,但是该参数缺少了 @PathParam 注解而导致的。在 Jakarta WebSocket API 中,如果 onOpen 方法中有参数,那么这些参数必须使用 @PathParam 注解进行标注。

@PathParam 注解用于从 WebSocket 连接的 URI 路径中提取参数值。通常情况下,在 WebSocket 的 URI 路径中,可以包含一些参数信息,这些参数信息可以通过 @PathParam 注解来注入到 onOpen 方法中的参数中,以便在连接建立时进行使用。

要解决这个异常,需要为 onOpen 方法中的参数添加 @PathParam 注解

那为什么不能用@RequestParam注解呢

在 Java WebSocket API 中,使用 @RequestParam 注解是不正确的,因为它是 Spring Framework 中用于处理 HTTP 请求参数的注解,而不是用于处理 WebSocket 连接的。

在 Java WebSocket API 中,应该使用 @PathParam 注解来从 WebSocket URI 路径中提取参数值,而不是使用 @RequestParam。这是因为 WebSocket 是一种全双工的通信协议,不同于传统的基于请求-响应模式的 HTTP。WebSocket 通常使用 URI 路径来携带信息,而不是查询参数。

因此,要正确处理 WebSocket 连接中的参数,应该使用 @PathParam 注解而不是 @RequestParam 注解。

那可以用@PathValiable注解吗

在 Java WebSocket API 中,通常不使用 @PathVariable 注解来处理 WebSocket 连接的路径参数,因为 @PathVariable 是 Spring MVC 中用于从 URL 路径中提取参数值的注解,不适用于 Java WebSocket API。

在 Java WebSocket API 中,应该使用 @PathParam 注解来从 WebSocket URI 路径中提取参数值。这是 Java WebSocket API 的规范和标准方式,而不是使用 @PathVariable 注解。

因此,要正确处理 WebSocket 连接中的路径参数,应该使用 @PathParam 注解而不是 @PathVariable 注解。

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值