我们实现的自定义计算视图类自定义方法,例如“getMonthlyDiscount”,“getMonthlyPrice”等,并与组件框架BasketBOCalculationResultViewExtensionFactory注册它。 问题是我们无法找到如何调用这些方法来获得计算结果的信息。
通过调用“basketbo.getExtension(BasketBOCalculationResultViewExtension.class)”我们得到“BasketBOCalculationResultViewExtensionImpl”,所以只能在“LineItemCtnrCalculationResultViewProxy”中定义的方法是可用的,不是我们的习俗。
同样的例子可以应用到的如何调用方法“getDuties”的问题,从TutorialCalculationResultView在这里给出: https://support.intershop.com/kb/index.php/Display/23V395#Cookbook-BasketCalculation-Recipe:TheResultView
谢谢您的回答! 亲切的问候
除了威廉的回答是:
如果您使用的是ICM版本> = 7.10.8.0,你应该能够检索您的TutorialCalculationResultView
通过:
LineItemCtnrCalculationResultViewProxy resultViewProxy = basketBO.getExtension("CalculationResultView");
TutorialCalculationResultView resultView = (TutorialCalculationResultView)resultViewProxy.getDelegate();
如果您使用7.10.8.0之前版本,并有支持Intershop的合同,你总是可以尝试Intershop的要求的技术支持,如果该功能可以downported。
另外,如果您的自定义方法TutorialCalculationResultView
简单,只有通过相关的值CalculationRuleSet
,那么你也可以使用以下方法之一从BasketBOCalculationResultViewExtension
直接检索值:
// returns a single item from the group
ComputedItem getComputedItem(String group, String id);
// returns the whole group
Collection<ComputedItem> getComputedItems(String group);
我看到奇迹发生在这种情况下:
<instance name="BasketBOCalculationResultViewExtensionFactory"
with="BasketBOCalculationResultViewExtensionFactoryImpl" > ..</>
这BasketBOCalculationResultViewExtensionFactory
创建BasketBOCalculationResultViewExtensionImpl
实例。 这是硬编码,这样你们不能用自己的实现来替代这个伤心地。
所以我看到的唯一选择是更换整个BasketBOCalculationResultViewExtensionFactory
工厂。
<implementation name="BasketBOCalculationResultViewExtensionFactoryImpl"
implements="BusinessObjectExtensionFactory"
class="your.custom.cartridge.MyBasketBOCalculationResultViewExtensionFactory">
<requires name="assignment" contract="CalculationResultViewFactoryAssignment" cardinality="0..n" />
</implementation>
MyBasketBOCalculationResultViewExtensionFactory
则可以扩展BasketBOCalculationResultViewExtensionFactory
,你必须覆盖的方法addAssignment
和createExtension