Hybris AddressReversePopulator 不会在 AddressModel 上填充 Line1

问题描述

我在使用 AddressReversePopulatorAddressData 转换为 AddressModel 时遇到问题。

问题出现在 populate(addressData,addressModel) 方法的这一行

addressModel.setLine1(addressData.getLine1());
addressModel.setLine2(addressData.getLine2());

AddressModel.java 上的 setLineX 方法使用

getPersistenceContext().setDynamicValue(this,LINE1,value);

但是在尝试填充 Line1 和 Line2 时,DynamicAttributesProvider() 中的 ItemmodelContextImpl.class 为空,因此它不会填充 addressModel 中的两个值,而是填充器的其他字段中提供者没问题。

我该如何解决这个问题?

谢谢

解决方法

在这种情况下,如果您将 Line1 和 Line2 接收为 null,请尝试设置空字符串并继续。它会起作用。 示例:

addressModel.setLine1(formatLine1(addressData.getLine1()));
private String formatLine1(String line1)
{
    if (StringUtils.isEmpty(line1))
    {
        return "";
    }

    String[] parts = line1.split(",");
    if (parts.length > 0)
    {
        String[] newLine1 = Arrays.stream(parts).filter(p -> !p.isEmpty()).toArray(String[]::new);

        return String.join("," + " ",newLine1);
    }
    return "";
}