SAP CX (HYBRIS):如何从保存的购物车中删除已删除的产品

问题描述

您好,我在访问“我保存的购物车”时遇到问题,出现 500 错误。由于已保存购物车列表中的购物车包含来自 /commercefacades/order/impl/DefaultSaveCartFacade.java 的产品为 null,因此它不再存在于我们的存储库中。

因此,当我们想要将 SavedCartModel CartModel 转换为 SavedCartData CartData 时,问题就会发生。填充产品数据的填充器称为:

public class ProductBasicPopulator<SOURCE extends ProductModel,TARGET extends ProductData> extends
    AbstractProductPopulator<SOURCE,TARGET>
{
    private ProductConfigurableChecker productConfigurableChecker;

@Override
public void populate(final SOURCE productModel,final TARGET productData) throws ConversionException
{
    productData.setName((String) getProductAttribute(productModel,ProductModel.NAME));
    productData.setManufacturer((String) getProductAttribute(productModel,ProductModel.MANUFACTURERNAME));

    productData.setAveragerating(productModel.getAveragerating());
    if (productModel.getvariantType() != null)
    {
        productData.setvariantType(productModel.getvariantType().getCode());
    }
    if (productModel instanceof VariantProductModel)
    {
        final VariantProductModel variantProduct = (VariantProductModel) productModel;
        productData.setBaseProduct(variantProduct.getBaseProduct() != null ? variantProduct.getBaseProduct().getCode() : null);
    }
    productData.setPurchasable(Boolean.valueOf(productModel.getvariantType() == null && isApproved(productModel)));
    productData.setConfigurable(Boolean.valueOf(getProductConfigurableChecker().isProductConfigurable(productModel)));
    productData.setConfiguratorType(getProductConfigurableChecker().getFirstConfiguratorType(productModel));
}
// code
}
在 populate 方法的第一个参数中传递的

ProductModel 为空,因此抛出空指针异常。

我该如何处理这个案子?有没有办法从保存的购物车中删除不再存在的产品?或者另一种无需移除已保存购物车即可解决此问题的解决方案。

请帮我解决这个问题。 提前致谢。 问候,

解决方法

您如何删除产品?

通常我们会检查现有的购物车并删除项目,在删除之前计算 = false。

另一方面,产品删除并不是一个好概念。如果您删除产品、订单、寄售等,则会出现问题。您需要将这些产品标记为不可销售,而不是删除。