gpt4 book ai didi

java - 在 Spring MVC 中绑定(bind) UUID

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:28:24 25 4
gpt4 key购买 nike

在 Spring MVC 中绑定(bind) UUID 的最简单方法是什么,这样才行得通:

@RequestMapping("/MyController.myAction.mvc")
@ResponseBody
public String myAction(UUID id, String myParam)...

使用上面的我目前得到以下异常:

org.springframework.beans.BeanInstantiationException: 
Could not instantiate bean class [java.util.UUID]:
No default constructor found;
nested exception is java.lang.NoSuchMethodException: java.util.UUID.<init>()

SO 上还有其他问题绕过这个问题,但似乎没有人回答它。我正在使用 Spring 3.latest(实际上是 4 个 EA)。我正在寻找实现这一目标的最新、最简单的方法。

最佳答案

UUID 是一个不能简单实例化的类。假设它作为请求参数出现,您应该首先使用 @RequestParam 注释该参数。

@RequestMapping("/MyController.myAction.mvc")
@ResponseBody
public String myAction(@RequestParam UUID id, String myParam)...

现在这需要一个名为 id 的请求参数在请求中可用。 StringToUUIDConverter 会将参数转换为 UUID由 Spring 自动注册。


Spring 3.2 之前

没有 StringToUUIDConverter 所以你还必须自己编写和注册转换器。

public class StringToUUIDConverter implements Converter<String, UUID> {
public UUID convert(String source) {
return UUID.fromString(source);
}
}

将此类连接到 ConversionService,您应该对请求参数进行 UUID 转换。 (如果它是一个请求 header ,这也适用,基本上适用于接入 ConversionService 的所有内容)。您可能还希望为其他方式(UUID -> 字符串)提供一个 Converter

将它连接到 Spring MVC 在 the reference guide 中有很好的解释。 (假设您使用 xml 配置)。但简而言之:

<mvc:annotation-driven conversion-service="conversionService"/>

<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="org.company.converter.StringToUUIDConverter"/>
</set>
</property>
</bean>

关于java - 在 Spring MVC 中绑定(bind) UUID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20366304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com