问题描述
您好,我在访问“我保存的购物车”时遇到问题,出现 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。
另一方面,产品删除并不是一个好概念。如果您删除产品、订单、寄售等,则会出现问题。您需要将这些产品标记为不可销售,而不是删除。