低于当前输出总共有28个字符
1Tit FNameLName EOL
2Tit StrCA12345EOL
低于预期的输出总共有18个字符
1Tit FNameLNameEOL
2Tit StrCA12345EOL
如果段对象为空,我试图设置空格,这样我就可以有detail1或detail2但不能同时使用,请帮忙。谢谢。
mapping.xml
<stream name="employeeStream" format="fixedlength">
<group name="employees" class="com.Employees"
minOccurs="0" maxOccurs="unbounded">
<record name="employee" class="com.tEmployee"
collection="list" minOccurs="1" maxOccurs="unbounded">
<field name="title" length="5"/>
<segment name="detail1" class="com.Details1"
minOccurs="0" maxOccurs="1">
<field name="firstName" length="5"/>
<field name="lastName" length="5"/>
</segment>
<segment name="detail2" class="com.Details2"
minOccurs="0" maxOccurs="1">
<field name="street" length="3" />
<field name="city" length="2" />
<field name="zip" length="5" />
</segment>
<field name="end" length="3"/>
</record>
</group>
</stream>
使用的Java代码
ArrayList<Employees> emps = new ArrayList<>();
ArrayList<Employee> emp = new ArrayList<>();
Employees employees = new Employees();
Details1 detail1 = new Details1();
detail1.setFirstName("FName");
detail1.setLastName("LName");
Employee emp1 = new Employee();
emp1.setTitle("1Tit");
emp1.setDetail1(detail1);
emp1.setEnd("EOL");
emp.add(emp1);
Details2 detail2 = new Details2();
detail2.setStreet("Str");
detail2.setCity("CA");
detail2.setZip("12345");
Employee emp2 = new Employee();
emp2.setTitle("2Tit");
emp2.setEnd("EOL");
emp2.setDetail2(detail2);
emp.add(emp2);
employees.setEmployee(emp);
emps.add(employees);