在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