#grails
#grails
Вопрос:
У меня есть что-то вроде этого…
class DomainConverter implements GenericConverter {
private Class<Domain> classOfDomain;
private Class<DomainCommand> classOfDomainCommand;
public Set<GenericConverter.ConvertiblePair> getConvertibleTypes() {
Set<GenericConverter.ConvertiblePair> convertiblePairs = new HashSet<GenericConverter.ConvertiblePair>();
convertiblePairs.add(new GenericConverter.ConvertiblePair(classOfDomain, classOfDomainCommand));
convertiblePairs.add(new GenericConverter.ConvertiblePair(classOfDomainCommand, classOfDomain));
return convertiblePairs;
}
public Object convert(Object source, TypeDescriptor sourceType, TypeDescriptor targetType) {
if (classOfDomain.equals(sourceType.getType())) {
return this.convert((Domain) source);
} else {
return this.convertBack((DomainCommand) source);
}
}
protected DomainCommand convert(Domain definition){
...
}
protected Domain convertBack(DomainCommand command){
...
}
}
Должен ли я подключать его к классу или добавлять в resources.groovy?
Как мне создать DomainCommand, чтобы у меня все еще была моя автоматическая проводка
Ответ №1:
Просматривая документацию Spring, вы можете увидеть пример объявления компонента:
<bean id="conversionService"
class="org.springframework.context.support.ConversionServiceFactoryBean"/>
<bean id="conversionService"
class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<list>
<bean class="example.MyCustomConverter"/>
</list>
</property>
</bean>
Итак, вам нужно объявить свой конвертер, а также ConversionService в вашем resources.groovy
файле.
Комментарии:
1. В значительной степени верно, но я бы рекомендовал делать это в файле groovy, как вы намекаете, вместо этого. вместо этого (вот как я в итоге это сделал). XML-файлы немного старомодны 🙂
2. Да, я только что вставил версию Spring, чтобы вы могли перевести ее в версию Groovy DSL.