- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不明白如何在 ATG 中使用 repositoryItem。我需要如何在其上构建自定义逻辑。
我需要在 repositoryItem 上创建普通的 JavaBean 还是我需要按原样使用它?我将尝试解释:
repositoryItem 的逻辑:
RepositoryItem store = getRepository().getItem(..);
String address = store.getPropertyValue(..);
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/
我不明白如何在 ATG 中使用 repositoryItem。我需要如何在其上构建自定义逻辑。 我需要在 repositoryItem 上创建普通的 JavaBean 还是我需要按原样使用它?我将尝试
我是 ATG 新手,我无法做一些看起来相当简单的事情。 我正在尝试通过订单号在数据库中获取订单。但这个数字不是 orderId,所以我不能只使用 OrderManager.loadOrder 方法。
我是一名优秀的程序员,十分优秀!