Я использую HeaderColumnNameMappingStrategy для сопоставления CSV-файла с заголовком в JavaBean.Строковые значения разбираются нормально, но любое значение «истина» или «ложь» в csv не отображается на JavaBean, и я получаю следующее исключение из PropertyDescriptor:
java.lang.IllegalArgumentException: argument type mismatch
Код, в котором это происходит, находится в CsvToBean,строка 64:
protected T processLine(MappingStrategy<T> mapper, String[] line) throws
IllegalAccessException, InvocationTargetException, InstantiationException, IntrospectionException {
T bean = mapper.createBean();
for(int col = 0; col < line.length; col++) {
String value = line[col];
PropertyDescriptor prop = mapper.findDescriptor(col);
if (null != prop) {
Object obj = convertValue(value, prop);
// this is where exception is thrown for a "true" value in csv
prop.getWriteMethod().invoke(bean, new Object[] {obj});
}
}
return bean;
}
protected PropertyEditor getPropertyEditor(PropertyDescriptor desc) throws
InstantiationException, IllegalAccessException {
Class<?> cls = desc.getPropertyEditorClass();
if (null != cls) return (PropertyEditor) cls.newInstance();
return getPropertyEditorValue(desc.getPropertyType());
}
Я могу подтвердить (с помощью отладчика), что идентификатор метода установки правильно получен в этой точке.
Проблема возникает в desc.getPropertyEditorClass (), так как он возвращает ноль.Я предполагал, что примитивные типы и его оболочки поддерживаются.Разве они не?