-->

如何调用从CalculationResultView类自定义方法(How to call custo

2019-10-16 13:16发布

我们实现的自定义计算视图类自定义方法,例如“getMonthlyDiscount”,“getMonthlyPrice”等,并与组件框架BasketBOCalculationResultViewExtensionFactory注册它。 问题是我们无法找到如何调用这些方法来获得计算结果的信息。

通过调用“basketbo.getExtension(BasketBOCalculationResultViewExtension.class)”我们得到“BasketBOCalculationResultViewExtensionImpl”,所以只能在“LineItemCtnrCalculationResultViewProxy”中定义的方法是可用的,不是我们的习俗。

同样的例子可以应用到的如何调用方法“getDuties”的问题,从TutorialCalculationResultView在这里给出: https://support.intershop.com/kb/index.php/Display/23V395#Cookbook-BasketCalculation-Recipe:TheResultView

谢谢您的回答! 亲切的问候

Answer 1:

除了威廉的回答是:

如果您使用的是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);


Answer 2:

我看到奇迹发生在这种情况下:

<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 ,你必须覆盖的方法addAssignmentcreateExtension



文章来源: How to call custom methods from CalculationResultView class