BeanIO - "Слишком мало полей, ожидается 8 минимум", почему?
Я использую BeanIO 1.2 в Java, и вот мое отображение:
<stream name="RecordImport" format="delimited">
<record name="Record" minOccurs="1" maxOccurs="unbounded" class="com.myclasses.Record">
<field name="date" type="date" format="MM/dd/yyyy" trim="true"/>
<field name="user" type="string" trim="true"/>
<field name="storage" type="string" trim="true"/>
<field name="product" type="string" trim="true"/>
<field name="qty" type="bigdecimal" format="#,##0" trim="true"/>
<field name="altQty1" type="bigdecimal" format="#,##0" trim="true"/>
<field name="altQty2" type="bigdecimal" format="#,##0" trim="true"/>
<field name="altQty3" type="bigdecimal" format="#,##0" trim="true"/>
</record>
</stream>
и мой текстовый файл выглядит так:
3/11/2012 lpq 200011 RDD1006 8
3/11/2012 lpq 200011 RDD1006 8
3/11/2012 lpq 200011 RDD1006 8 1 2 3
3/11/2012 lpq 200011 RDD1006 8
В результате я получаю это сообщение:
"- Line 4: Too few fields, expected 8 minimum."
Теперь это странно, потому что у меня есть вкладки, чтобы указать, что в четвертой строке есть 8 полей. Похоже, это происходит из-за того, что последние поля дерева в 4-й строке являются нулевыми. Мне нужна возможность, чтобы они были нулевыми, но чтобы это сообщение не появлялось. Также странно, что это происходит только для 4-й строки, а не для 1-й или 2-й.
Есть идеи?
1 ответ
Я не мог воссоздать проблему, которую вы видите (используя BeanIO 1.2.5), не удалив одно из окон / полей в конце. Если они действительно являются необязательными, вы можете установить minLength="5" в определении записи. BeanIO 2.x немного более гибок и позволяет вместо этого устанавливать minOccurs="0" в конечных необязательных полях...
Удачи!