当前位置: 首页 > 知识库问答 >
问题:

如何在Spring Websocket中为@Header值创建自定义转换器/反序列化器

呼延智明
2023-03-14

我有一个Websocketendpoint,我想作为头值接收它,不是字符串,而是对象。

    @MessageMapping("/gather/{resource}")
    fun emitGatherEvent(@DestinationVariable resource: String, @Header context: Context) {     
        LOG.debug("gather endpoint called for client ${context.clientId} and character ${context.characterId} with resource '$resource'")
        eventDispatcher.dispatchEvent(Gather(resource), context.characterId)
    }
org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [java.lang.String] to type [@org.springframework.messaging.handler.annotation.Header com.barbarus.gameserver.websocket.Context]

你知道怎么做吗?

共有1个答案

羊新翰
2023-03-14

您可以通过formatterregistry执行此操作

@Configuration
public class YourConfig implements WebMvcConfigurer{
 @Override
    public void addFormatters(FormatterRegistry registry) {
     registry.addConverter(new YourCustomConverter());
    }
}

}

 类似资料:
  • 我希望在Jackson中为Enum类的集合创建一个自定义反序列化器。因为自定义反序列化器的行为对于所有枚举都是相同的。我想为我的所有枚举类创建公共反序列化程序。 我尝试使一般自定义反序列化如下: 问题是我想在反序列化器中调用枚举静态方法,但无法这样做,因为我没有任何可用的类/枚举上下文信息。 你能帮我知道如何实现它吗?

  • 想象一下以下场景: 我想为Foo编写一个自定义的Jackson反序列化程序。为了做到这一点(例如,为了反序列化具有Foo的类 如何编写这样的反序列化程序?这应该是可能的,因为Jackson是通过键入集合和地图来实现的。 澄清: 似乎有两个部分可以解决这个问题: 1)获取内声明的属性类型并使用它来反序列化

  • 我试图实现的是在自定义反序列化器中将JsonNode转换为POJO(=反序列化它)。 大多数其他答案建议使用对象映射器,但我在反序列化方法中没有对象映射器。 这是我的自定义反序列化程序: (

  • 嗨下面这个问题 如何在Jackson中为泛型类型创建自定义反序列化器? 我想知道如何通过这个来解析 这就是我目前所拥有的 当我试图反序列化一点这个的时候,我得到了一个NPE

  • 问题内容: 序列化器很少,例如 我们如何创建自己的自定义序列化程序? 问题答案: 在这里,您有一个示例,将自己的序列化器/解串器用于Kafka消息值。对于Kafka消息密钥是同一回事。 我们希望将MyMessage的序列化版本作为Kafka值发送,并再次将其反序列化为使用方的MyMessage对象。 在生产者端序列化MyMessage。 您应该创建一个实现org.apache.kafka.comm

  • 如何创建自己的自定义序列化程序?