Из журналов ошибок видно, что Spring не может конвертировать в объект сущности Role.
Определить центральный класс для всех разговоров и конвертеров, как показано ниже.
@Configurable
/**
* A central place to register application converters and formatters.
*/
public class ApplicationConversionServiceFactoryBean extends FormattingConversionServiceFactoryBean {
@Autowired
RoleService roleService;
@SuppressWarnings("deprecation")
@Override
protected void installFormatters(FormatterRegistry registry) {
super.installFormatters(registry);
}
public Converter<Role, String> getRoleToStringConverter() {
return new Converter<com.package.Role, String>() {
@Override
public String convert(Role role) {
return new StringBuilder().append(role.getRoleName()).toString();
}
};
}
public Converter<Long, Role> getIdToRoleConverter() {
return new Converter<Long, com.package.Role>() {
@Override
public com.package.Role convert(Long id) {
return roleService.read(id);
}
};
}
public Converter<String, Role> getStringToRoleConverter() {
return new Converter<String, com.package.Role>() {
@Override
public com.package.Role convert(String id) {
return getObject().convert(getObject().convert(id, Long.class), Role.class);
}
};
}
public void installLabelConverters(FormatterRegistry registry) {
registry.addConverter(getRoleToStringConverter());
registry.addConverter(getIdToRoleConverter());
registry.addConverter(getStringToRoleConverter());
}
@Override
public void afterPropertiesSet() {
super.afterPropertiesSet();
installLabelConverters(getObject());
}
}
Но чтобы Spring узнал об этом классе, вам нужно внедрить указанный ниже bean-компонент в конфигурацию applicationContext.xml.
<bean class="com.package.ApplicationConversionServiceFactoryBean" id="applicationConversionService"/>
и зарегистрировать класс обслуживания в конфигурации applicationContext.xml, как показано ниже.
<mvc:annotation-driven conversion-service="applicationConversionService"/>