Прошло много времени с тех пор, как я сделал Dozer, но причина, по которой вы это видите, связана с тем, как Dozer отображает объекты. Он ищет, чтобы создать новый объект, просто вызвав конструктор no-arg, и поскольку URL
не имеет одного, вот почему вы получаете это исключение.
Способ создания преобразования идентичности: сопоставить один экземпляр объекта с тем же типом объекта.
, как мы делаем это в 2-х частей:
Во-первых, объявить о пользовательской конфигурации в файле dozer.xml
.
<configuration>
<custom-converters>
<converter type="com.stackoverflow.URLConverter">
<class-a>java.net.URL</class-a>
<class-b>java.net.URL</class-b>
</converter>
</custom-converters>
</configuration>
Далее создайте новый URLConverter
класс, который простирается от DozerConverter
. Причина, по которой она распространяется от DozerConverter
, а не CustomConverter
, предназначена для простоты и безопасности типов.
public class URLConverter extends DozerConverter<URL, URL> {
public URLConverter() {
super(URL.class, URL.class);
}
@Override
public URL convertTo(URL source, URL destination) {
URL result = null;
try {
result = source.toURI().toURL();
} catch (MalformedURLException | URISyntaxException e) {
throw e;
}
return result;
}
@Override
public URL convertFrom(URL source, URL destination) {
URL result = null;
try {
result = source.toURI().toURL();
} catch (MalformedURLException | URISyntaxException e) {
throw e;
}
return result;
}
}
Процесс здесь довольно механически:
- Попытка преобразовать URL в URI, а затем преобразовать его обратно в URL.
- Если у вас есть некорректность с URI или URL-адресом, отбросьте его обратно - мы не должны иметь дело с неправильным URL-адресом в этом состоянии в любом случае.
- В противном случае верните результат преобразованного URL-адреса.
Мы исходим из того, что у вас есть методы 'public' accessor (getters/seters) для каждого из ваших свойств, не так ли? - Кроме того, вы могли бы поделиться файлом отображения .xml' (если есть) – ochi
@ochi Да, у меня есть все публичные аксессоры .... но я не могу найти map.xml – Phopes
@MrPaulHenry - weird! Можете ли вы поделиться, как вы делаете картографирование? – ochi