点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
我正在尝试在凭证扩展名下覆盖Voucher jalo的getDiscountValue方法。
即使我按照以下教程进行操作:
https://wiki.hybris.com/display/release4/Jalo+Layer
它不会在我新创建的jalo中运行代码。
重写Jalo类的正确方法是什么?
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
我正在尝试在凭证扩展名下覆盖Voucher jalo的getDiscountValue方法。
即使我按照以下教程进行操作:
https://wiki.hybris.com/display/release4/Jalo+Layer
它不会在我新创建的jalo中运行代码。
重写Jalo类的正确方法是什么?
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
我正在尝试在凭证扩展名下覆盖Voucher jalo的getDiscountValue方法。
即使我按照以下教程进行操作:
https://wiki.hybris.com/display/release4/Jalo+Layer
它不会在我新创建的jalo中运行代码。
重写Jalo类的正确方法是什么?
嗨Emre,
首先,您添加的链接来自版本4,除非您正在使用此版本,否则我建议您参考新版本:
https://wiki.hybris.com/display/release5/Jalo+Layer
然后是Jalo 层已弃用,并且使用起来不是很友好。 无法正确覆盖Voucher类的方法,但是您有两个选择:
第一种可能性是创建在 -items.xml 中声明的您自己的类型,例如
MyVoucher
,从原始的Voucher扩展到代码>类型。 然后,在生成的
MyVoucher.java
类中,您应该实现新的逻辑。 然后,无论您在哪里创建凭证,都应改为创建MyVoucher
实例,在这种情况下,可以从hmc或使用impex文件将Voucher
的插入替换为MyVoucher
。 在凭证示例中,此解决方案可能有效并且最简单,但并非总是可以根据需要控制对象的创建,在这种情况下,您可以选择第二种方法:第二种可能性是使用面向方面的编程,如果您不熟悉它,这将不简单。 AOP允许您拦截任何类的任何方法的执行并应用自己的逻辑。
例如,如果您要推断hybris默认
PromotionOrderChangeDeliveryModeAction
的evaluate()
方法,则需要创建文件 aop.xml 位于 myextension/resources/META-INF 中(如果不存在,请创建它),它应该像这样:weaver内的
include
标记表示将被扫描以查找要拦截的方法的包或类,在这种情况下,默认的hybris是PromotionOrderChangeDeliveryModeAction
。 在第二部分中,声明了实际的方面,它是类似于以下内容的java类:在此类中,我们指定要拦截的方法(@Pointcut批注),并拦截
@Around
。 之前或之后,还有其他可能性,以及采用方法参数或类实例本身的更为复杂的情况。我希望这有助于指导如何覆盖jalo方法,因为关于该方法的信息不多
问候,胡安
很好的建议,它可以工作,但是您还需要将Aspect包声明为include部分,否则它将引发异常(NoSuchMethodError:Aspect.aspectOf())。
对此进行了更新,重写jalo类定义非常简单,您需要做的就是使用的标准类名来定义自己的bean。 您要覆盖的jalo类作为id。 例如,考虑前面的示例,可以按照附件中的说明实现。 希望这会有所帮助!
[1]:/storage/temp/4401-2015-11-26-14-12-21.png
您好,Avdhey,无法打开附件,请分享
这是扩展和覆盖Jalo类而不创建新项的更好方法,请遵循以下步骤:1/扩展现有jalo类。 2/覆盖您想要的内容。 3/为您的新jalo声明一个bean,以下示例用于替代serailvoucher jalo:
*
我已经使用aop覆盖了" OrderPromotion" jalso类的" getOrderSubtotalAfterDiscounts()"方法,但是当我尝试获取" pjp.getTarget()"时,它给出了null 值。
aop.xml:
Spring bean声明
一周热门 更多>