BeanIO - 如何将 null 分配给空列表
BeanIO - how to assign null to empty list
所以我正在使用 BeanIO,我必须编写一个类型处理程序,如果通用列表为空,它将为列表分配 null。例如,我正在从 xml 文件中导入地址。
如果有关于地址的完整信息,xml 看起来像这样:
<Address>
<Street1>aaaaaa</Street1>
<PostCode>00-000</PostCode>
<City>bbbbb</City>
<CountryCode>AA</CountryCode>
<PhoneNo>+00 00 00000000</PhoneNo>
<Email>aaa@aaa.aaa</Email>
</Address>
如果xml文件中没有地址信息,则如下所示:
<Address />
java class 中的映射看起来像这样 - 带有 BeanIO @segment 注释:
@Segment(xmlName = "Address", minOccurs = 0, maxOccurs = -1)
private List<Address> address;
基本上,测试 class 期望如果上面的列表为空,则类型处理程序应为其分配 null。如果列表没有任何类型处理程序,则分配空括号:
address=[]
这是我的问题,有谁知道处理程序应该如何查找 Collections 类型,在本例中为 List?以前我为字符串、整数等编写了一些处理程序——带有@Field 注释的东西一切正常。现在我正在努力为带有@Segment 注释的东西编写代码。
有什么提示吗?从哪个 class 继承?
从 2.1 版开始,您可以在集合上使用 lazy="true"
。来自 migrating to 2.1 documentation
Prior to 2.1, repeating segments designated lazy="true" were unmarshalled as an empty collection. Going forward, a collection will no longer be created if designated lazy and all items are null or the empty String.
与其尝试写一个 TypeHandler
,不如先试试这个:
@Segment(xmlName = "Address", minOccurs = 0, maxOccurs = -1, lazy="true")
private List<Address> address;
我认为您所说的 "empty brackets" 只是实现 toString()
方法以显示列表为空的方式。
所以我正在使用 BeanIO,我必须编写一个类型处理程序,如果通用列表为空,它将为列表分配 null。例如,我正在从 xml 文件中导入地址。
如果有关于地址的完整信息,xml 看起来像这样:
<Address>
<Street1>aaaaaa</Street1>
<PostCode>00-000</PostCode>
<City>bbbbb</City>
<CountryCode>AA</CountryCode>
<PhoneNo>+00 00 00000000</PhoneNo>
<Email>aaa@aaa.aaa</Email>
</Address>
如果xml文件中没有地址信息,则如下所示:
<Address />
java class 中的映射看起来像这样 - 带有 BeanIO @segment 注释:
@Segment(xmlName = "Address", minOccurs = 0, maxOccurs = -1)
private List<Address> address;
基本上,测试 class 期望如果上面的列表为空,则类型处理程序应为其分配 null。如果列表没有任何类型处理程序,则分配空括号:
address=[]
这是我的问题,有谁知道处理程序应该如何查找 Collections 类型,在本例中为 List?以前我为字符串、整数等编写了一些处理程序——带有@Field 注释的东西一切正常。现在我正在努力为带有@Segment 注释的东西编写代码。 有什么提示吗?从哪个 class 继承?
从 2.1 版开始,您可以在集合上使用 lazy="true"
。来自 migrating to 2.1 documentation
Prior to 2.1, repeating segments designated lazy="true" were unmarshalled as an empty collection. Going forward, a collection will no longer be created if designated lazy and all items are null or the empty String.
与其尝试写一个 TypeHandler
,不如先试试这个:
@Segment(xmlName = "Address", minOccurs = 0, maxOccurs = -1, lazy="true")
private List<Address> address;
我认为您所说的 "empty brackets" 只是实现 toString()
方法以显示列表为空的方式。