【问题标题】:ATG How to override the mergeOrdersCopyCommerceItem methodATG 如何覆盖 mergeOrdersCopyCommerceItem 方法
【发布时间】:2014-03-26 18:14:46
【问题描述】:

我是 ATg 商务领域的新手,想知道是否有人可以帮助我解决问题。我们的 CommerceItem 有其他属性。一旦用户登录我们的网站,commerceItem 的这些附加属性就不会被复制。有人可以建议或举例说明如何确保复制属性吗?

下面是我的代码的 sn-p:

CommerceItem sourceCitem;
CommerceItem destCitem;
List citemList = pSrcOrder.getCommerceItems(); //get commerce item from source order

 for (int i = 0, citemListSize = citemList .size(); i < citemListSize; i++) {
  sourceCitem= (CommerceItem) ciList.get(i);
  destCitem= getCommerceItemManager().mergeOrdersCopyCommerceItem(pSrcOrder,pDestOrder, sourceCitem);

我扩展了 CommerceItemImpl 并在新类中添加了所有未添加到 destCitem 的附加属性。

任何帮助将不胜感激。

谢谢

【问题讨论】:

  • 您是否更新了OrderTools 组件中的beanNameToItemDescriptorMap 以将commerceItem 映射到您的新扩展实现?
  • 是的,我做到了。但我认为当它合并时,它只复制 CommerceItem 的属性,而不是我创建的新类中的属性。

标签: java e-commerce atg atg-dynamo


【解决方案1】:

您需要继承 CommerceItemManager 并重写 mergeOrdersCopyCommerceItem 方法,以首先调用超类方法进行基本复制,然后复制扩展的商务项目数据。

例如:


protected CommerceItem mergeOrdersCopyCommerceItem(Order pSrcOrder, Order pDstOrder, CommerceItem pItem) throws CommerceException {

    NewCommerceItem item = (NewCommerceItem) pItem;
    NewCommerceItem newItem = (NewCommerceItem) super.mergeOrdersCopyCommerceItem(pSrcOrder, pDstOrder, pItem);
        //Now your code to add the changes.
            newItem.setABC(item.getABC());
    return newItem;
    }

而且,由于您已经完成了更改,所以这就是我们所需要的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多