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

2020-09-12 07:05发布

         点击此处--->   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。

         点击此处--->   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条回答
木偶小白
1楼 · 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。 或者,您可能会争论是否需要设置当前货币,因为可能已经设置了当前货币。 您可以做最适合自己的事情。

半个程序猿
2楼-- · 2020-09-12 07:52

是的,非常感谢您的反馈

ZJXianG
3楼-- · 2020-09-12 07:56

关于报告该错误,我们很不幸地发现,与仅在此处解决问题并进行报告相比,报告错误对于我们的时间投入而言花费太多。

>

通常,合适的人会从此论坛中挑出问题,并在内部进行报告:)

CJones
4楼-- · 2020-09-12 07:39

哦,我知道了。 谢谢你的提示。 :)

一周热门 更多>

点击此处---> EasySAP.com 一起学习S4 HANA ...

相关问答