Фрагмент тега формы верен, и перечисление также корректно. Чего здесь не хватает, так это конвертера, который Spring будет использовать для преобразования строки из form:options
элемента в OperatorDTO enum
.
1) Добавьте еще два метода в OperatorDTO enum
// Enum level method to get enum instance by operator field.
public static OperatorDTO getByOperator( final String p_operator ) {
for ( OperatorDTO operatorDTO : OperatorDTO.values() ) {
if ( operatorDTO.isOperatorEqual( p_operator ) ) {
return operatorDTO;
}
}
return null;
}
// Instance level method to compare operator field.
public boolean isOperatorEqual( final String p_operator ) {
return getOperator().equals( p_operator ) ? true : false;
}
2) Создать специальный конвертер, такой как
import org.springframework.core.convert.converter.Converter;
public class OperatorDTOConverter implements Converter<String, OperatorDTO> {
public OperatorDTO convert( String source ) {
return OperatorDTO.getByOperator( source.trim() );
}
}
3) Преобразователь Registeg в конфигурации приложения ( конфигурация java в данном случае)
@Configuration
@EnableWebMvc
@ComponentScan( basePackages = { "your.base.package"} )
public class AppWebConfig extends WebMvcConfigurerAdapter {
@Override
public void addFormatters( FormatterRegistry registry ) {
registry.addConverter( String.class, OperatorDTO.class, new OperatorDTOConverter() );
}
...
}