Доброго всем дня.
Прошу помощи со следующей проблемкой.
Есть у меня приложение на Spring MVC 4.3.2. В нем есть контроллер, принимающий некий строковый параметр. Этот строковый параметр я для пущей типизированности хочу превратить в enum. Т.е. имея:
package my.app.enums;
public enum Option {
OPTION_1,
OPTION_2,
OPTION_3;
}
хочу, чтобы можно было сделать контроллер:
@Controller
@RequestMapping("foo")
public class MyController {
@RequestMapping("bar/{option}")
public ModelAndView getBar(@PathVariable("option") Option option) {
// всяко-разно
}
}
С этой целью пишу свой конвертер:
import org.springframework.core.convert.converter.Converter;
import my.app.enums.Option;
public class OptionConverter implements Converter<String, Option> {
@Override
public Option convert(String source) {
return Option.valueOf(source); // на самом деле, посложнее, но это не суть
}
}
Далее, в соответствии с документацией (
docs.spring.io/spring/docs/current/spring-framewor... ) в настроечном XML объявляю и конфигурирую conversion service:
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<set merge="true">
<bean class="my.app.OptionConverter"/>
</set>
</property>
</bean>
Наконец, иду на
localhost:8080/foo/bar/OPTION_1 иии... все падает с ConversionNotSupportedException: Spring нагло заявляет, что не видит способа превратить java.lang.Spring в my.app.enum.Option.
Поставив бряк в методе convertIfNecessary класса TypeConverterDelegate, обратил внимание там фигурирует некий PropertyEditorRegistrySupport. Интернеты говорят, что, дескать, Spring почему-то вообще не стал conversionService использовать, хотя под отладкой видно, что инстанция ConversionServiceFactoryBean создается и ее свойство converters инициализируется.
В общем, чувствую, что застрял или очень сильно туплю. Подскажите, куда бы еще копнуть?