Kon*_*ong 8 java spring spring-mvc
在Spring MVC中绑定UUID的最简单方法是什么,这样可以:
@RequestMapping("/MyController.myAction.mvc")
@ResponseBody
public String myAction(UUID id, String myParam)...
Run Code Online (Sandbox Code Playgroud)
使用上面我当前获得以下异常:
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>()
Run Code Online (Sandbox Code Playgroud)
还有其他问题围绕着这个,但似乎没有人回答它.我正在使用Spring 3.latest(实际上是4 EA).我正在采用最新,最简单的方法来实现这一目标.
M. *_*num 20
UUID是一个不能简单地实例化的类.假设它作为请求参数出现,您应首先使用参数注释参数@RequestParam.
@RequestMapping("/MyController.myAction.mvc")
@ResponseBody
public String myAction(@RequestParam UUID id, String myParam)...
Run Code Online (Sandbox Code Playgroud)
现在,这需要一个请求参数,其名称id在请求中可用.该参数将转换为a UUID.然而,目前这将失败,因为目前没有任何东西可以从a转换String为a UUID.
为此创建一个Converter可以做到这一点.
public class StringToUUIDConverter implements Converter<String, UUID> {
public UUID convert(String source) {
return UUID.fromString(source);
}
}
Run Code Online (Sandbox Code Playgroud)
将此类挂钩到ConversionService,您应该对请求参数进行UUID转换.(如果它是一个请求标题,这也可以工作,基本上是为了进入的所有内容ConversionService).您也可能想要Converter使用另一种方式(UUID - > String).
将它连接到Spring MVC在参考指南中很好地解释了(假设你使用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>
Run Code Online (Sandbox Code Playgroud)
注意:从Spring 3.2 Spring a StringToUUIDConverter开始,它会自动注册.
从版本3.2开始,下面的转换器在Spring Framework(核心)中可用.
org.springframework.core.convert.support.StringToUUIDConverter<String, java.util.UUID>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9678 次 |
| 最近记录: |