gpt4 book ai didi

java - ATG JavaBean over RepositoryItem

转载 作者:行者123 更新时间:2023-11-29 08:40:12 24 4
gpt4 key购买 nike

我不明白如何在 ATG 中使用 repositoryItem。我需要如何在其上构建自定义逻辑。

我需要在 repositoryItem 上创建普通的 JavaBean 还是我需要按原样使用它?我将尝试解释:

  1. repositoryItem 的逻辑:

    RepositoryItem store = getRepository().getItem(..);
    String address = store.getPropertyValue(..);
  2. JavaBean 上的逻辑:

    class StoreBean {
    String address;

    StoreBean(RepositoryItem store) {
    address = store.getPropertyValue(..);
    }
    }

然后我可以按照自己的意愿使用 StoreBean 来获取它的字段(例如,为它们延迟加载)。

ATG 中的最佳实践是什么?

最佳答案

这是一个偏好问题。

RepositoryItem 对象没有的是强类型检查。您必须对正在使用的 RepositoryItem 的类型做出假设,或者您必须在代码中进行手动检查(参见下面的示例)。此外,由于 RepositoryItem 属性存储为元数据,您必须知道 1) 来自 XML 存储库描述符的属性的实际名称和 2) 您需要知道类型,这需要类型转换(示例:String firstName = (String) item.getProperty("firstName");)这是一个确保 RepositoryItem 对象类型为“sku”的验证示例":

RepositoryItemDescriptor skuItemDescriptor = getCatalogTools().getCatalog().getItemDescriptor(getCatalogTools().getBaseSKUItemType());
if (!RepositoryUtils.isTypeOfItemDesc(itemDescriptor, skuItemDescriptor)) {
throw new IllegalArgumentException("RepositoryItem must be of type " + getCatalogTools().getBaseSKUItemType());
}

如果您采取不使用“JavaBeans”的方法,则会增加应用程序出现运行时错误的风险。我的建议是您在使用 RepistoryItem 对象和包装器对象之间保持健康的平衡。对于计划在大量代码库中使用的关键项,我建议使用包装器对象。

我建议,如果您创建包装器对象,为了保持一致性,您应遵循 Oracle Commerce 使用的相同设计模式。例如,“订单”项目由 OrderImpl 包装并实现了 ChangedProperties 接口(interface)。

public class OrderImpl
extends CommerceIdentifierImpl
implements Order, ChangedProperties

http://docs.oracle.com/cd/E52191_03/Platform.11-1/apidoc/atg/commerce/order/OrderImpl.html

关于java - ATG JavaBean over RepositoryItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40851827/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com