在Spring MVC中绑定UUID

Spring MVC中绑定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可以在请求中使用的请求参数。参数将转换为UUID。但是,此刻将失败,因为当前没有任何东西可以将a转换String为a

UUID

为此,创建一个Converter可以做到的。

public class StringToUUIDConverter implements Converter<String, UUID> {

public UUID convert(String source) {

return UUID.fromString(source);

}

}

将此类连接到ConversionService,您应该对请求参数进行UUID转换。(如果它是一个请求标头,则也可以使用,基本上适用于所有使用的内容ConversionService)。您可能还需要Converter换一种方式(UUID->

String)。

在参考指南中很好地说明了如何将其连接到Spring

MVC (假设您使用xml config)。简而言之:

<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>

从Spring 3.2 StringToUUIDConverter开始,已经添加了Spring

a ,它会自动注册。

以上是 在Spring MVC中绑定UUID 的全部内容, 来源链接: utcz.com/qa/420890.html

回到顶部