@Entity
public class SeedStarter {
...
private List<SeedStarterFeature> features;
...
В компоненте поддержки формы я хочу, чтобы функции автоматически отображались с помощью идентификаторов, выбранных пользователями
в шаблоне
<!-- seed starter type -->
<div>
<label>Type</label>
<select th:field="*{seedStarterType}">
<option th:each="ftype: ${allTypes}" th:text="${ftype.name}" th:value="${ftype.typeId}"></option>
</select>
</div>
, также проверка
<h3 th:text="${#conversions.convert('5', 'io.dreamitpossible.seedstartermanager.model.SeedStarterFeature')}"></h3>
и служба преобразования
@Component
public class SeedStarterFeatureFormatter implements Formatter<SeedStarterFeature> {
@Autowired
private SeedStarterFeatureService seedStarterFeatureService;
@Override
public SeedStarterFeature parse(String text, Locale locale) throws ParseException {
SeedStarterFeature match = null;
try{
Integer featureId = Integer.valueOf(text);
match = seedStarterFeatureService.selectAllById(featureId);
} catch (NumberFormatException exp){
}
return match;
}
@Override
public String print(SeedStarterFeature object, Locale locale) {
return object.toString();
}
}
@EnableWebMvc
@Configuration
@EnableTransactionManagement
@ComponentScan("io.dreamitpossible.seedstartermanager")
public class WebMvcConfiguration extends WebMvcConfigurerAdapter {
...
@Override
public void addFormatters(FormatterRegistry registry) {
registry.addFormatter(seedStarterFeatureFormatter());
}
@Bean
public SeedStarterFeatureFormatter seedStarterFeatureFormatter(){
return new SeedStarterFeatureFormatter();
}
...
}
Я также попробовал XML-конфигурацию, но она не сработала. Как я вижу с помощью идентификаторов функций метода POST, он создает SeedStarterFeature с помощью своего конструктора, не используя конвертерыили форматеры ...
в качестве примера: с идентификаторами 5 и 6 =))
features = [SeedStarterFeature {featureId = 0, name = '5'}, SeedStarterFeature {featureId = 0, name = '6'}
В чем моя ошибка?
Я использую spring4