2014-03-26 18 views
0

我是ATg商業世界的新手,想知道是否有人可以幫我解決問題。我們的CommerceItem有其他屬性。一旦用戶登錄到我們的網站,commerceItem的這些附加屬性不會被複制。有人可以建議或舉一個例子,我怎樣才能確保屬性被複制過來?ATG如何覆蓋mergeOrdersCopyCommerceItem方法

下面是我的代碼片段:

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新類的所有附加屬性。

任何幫助將不勝感激。

感謝

+0

您是否已更新'OrderTools'組件中的'beanNameToItemDescriptorMap'以將'commerceItem'映射到您的新的擴展實現? – radimpe

+0

是的,我做到了。但我認爲當它合併時,它僅複製CommerceItem的屬性,而不是我創建的新類中的屬性。 – user3465554

回答

0

您需要繼承CommerceItemManager和覆蓋mergeOrdersCopyCommerceItem方法首先調用父類的方法做基本的複印,然後將您擴展商業項目數據。

對於e.g:


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; 
    } 

而且,作爲改變你已經做了,所以這是我們所需要的。