dozer で CommonsMultipartFile から byte[] にマップしようとしています。
ドーザーは CommonsMultipartFile タイプについて何も知らないので、 customConverter が必要であることはわかっているので、次のように作成しました。
public class FileJtfConverter extends DozerConverter<CommonsMultipartFile, byte[]> {
/**
* Constructor
*/
public FileJtfConverter() {
super(CommonsMultipartFile.class, byte[].class);
}
@Override
public final byte[] convertTo(CommonsMultipartFile a, byte[] b) {
if (a != null) {
return a.getBytes();
}
return null;
}
@Override
public final CommonsMultipartFile convertFrom(byte[] b, CommonsMultipartFile a) {
throw new UnsupportedOperationException("Not supported yet.");
}
}
そして私のdozer xmlファイル:
<mapping type="one-way">
<class-a>myPackage.ClassA
</class-a>
<class-b>myPackage.ClassB
</class-b>
...
<field custom-converter="es.xunta.formacion.sifo3.transporte.util.converter.FileJtfConverter">
<a>anexo</a>
<b>anexo</b>
</field>
</mapping>
クラス A とクラス B は次のとおりです。
public class ClassA{
...
private CommonsMultipartFile anexo;
...
public final CommonsMultipartFile getAnexo() {
return anexo;
}
public final void setAnexo(CommonsMultipartFile anexo) {
this.anexo = anexo;
}
}
public class ClassB{
...
protected byte[] anexo;
...
public void setAnexo(byte[] value) {
this.anexo = ((byte[]) value);
}
public byte[] getAnexoPago() {
return anexoPago;
}
}
すべて問題ないようですが、例外がスローされます: org.dozer.MappingException: java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileUploadException
pom.xml ファイルで依存関係を定義しているため、これはかなり奇妙です...
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</dependency>
何か案は..?どうもありがとう!