您可以使用Converter来执行自定义转换。对于您的示例,您需要执行以下操作:
public class WeatherConverter implements Converter<String[], Weather[]> {
@Override
public Weather[] convert(String[] source) {
if(source == null || source.length == 0) {
return new Weather[0];
}
Weather[] weathers = new Weather[source.length];
int i = 0;
for(String name : source) {
weathers[i++] = Weather.valueOf(name);
}
return weathers;
}
}
您可以在任何需要类型转换的地方使用Converter 。现在,您需要做的是注册它:
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<list>
<bean class="package.path.WeatherConverter"/>
</list>
</property>
</bean>
它已经完成了。
您可以在Spring Reference中查看更多详细信息。
您还可以查看PropertyEditor,使用@InitBinder ,如果需要,可能还有@ControllerAdvice 。但是,转换器更容易使用(IMO)。