为什么购物车还原有时会引发JaloObjectNoLongerValidException?

2020-09-12 07:05发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好社区 会话购物车不再有效后...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好社区

会话购物车不再有效后(默认情况下,此值为 commerceservices.cartValidityPeriod = 12960000 转换为150天),当用户使用时,我们开始收到 JaloObjectNoLongerValidException 错误 正在登录。我们将问题追溯到购物车还原代码。

de.hybris.platform.commerceservices.order.impl.DefaultCommerceCartRestorationStrategy#restoreCart

  if(isCartInValidityPeriod(cartModel)){
    ...
  }其他{
      尝试{
          changes.addAll(rebuildSessionCart(parameter));
      } catch(final CommerceCartModificationException e){
      抛出新的CommerceCartRestorationException(e.getMessage(),e);
      }
  }
  commerceCommonI18NService.setCurrentCurrency(cartModel.getCurrency());

  

这里的问题是rebuildSessionCart()方法将在cartModel上执行modelService.remove(),然后在尝试调用cartModel.getCurrency()时会抛出JaloObjectNoLongerValidException。

解决方法是覆盖默认策略并在还原/重置/移除购物车之前调用setCurrency。

4条回答
木偶小白
2020-09-12 07:44 .采纳回答

de.hybris.platform.commerceservices.order.impl.DefaultCommerceCartRestorationStrategy#restoreCart

  @Override
  public CommerceCartRestoration restoreCart(最终CommerceCartParameter参数)引发CommerceCartRestorationException {
    最后的CartModel cartModel = parameter.getCart();
    最终CommerceCartRestoration恢复=新的CommerceCartRestoration();
    最终List 修改=新ArrayList <>();
    如果(cartModel!= null)
    {
      如果(getBaseSiteService()。getCurrentBaseSite()。equals(cartModel.getSite()))
      {
          如果(logger.isDebugEnabled())
          {
            logger.debug("从购物车中还原" + cartModel.getCode()+"。");
          }
          commerceCommonI18NService.setCurrentCurrency(cartModel.getCurrency());
          如果(isCartInValidityPeriod(cartModel))
          {
            cartModel.setCalculated(Boolean.FALSE)
            ...

  

解决方法是覆盖默认策略并在还原/重置/移除购物车之前调用setCurrency。 或者,您可能会争论是否需要设置当前货币,因为可能已经设置了当前货币。 您可以做最适合自己的事情。

一周热门 更多>

相关问答