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を参照してください。
@InitBinderを使用してPropertyEditorを調べることもできます。また、必要に応じて@ControllerAdviceを使用することもできます。ただし、コンバーターははるかに使いやすいです (IMO)。