当前位置: 首页 > 知识库问答 >
问题:

AfterSaveListener类型码问题,当导入弹出

朱啸
2023-03-14

hybris6.3.0.2

我创建了一个AfterSaveListener,它在保存项目后执行一些自定义逻辑。

*AfterSaveListener-

@Override
public void afterSave(final Collection<AfterSaveEvent> events)
{
    for (final AfterSaveEvent event : events)
    {
        final int type = event.getType();
        if (AfterSaveEvent.UPDATE == type || AfterSaveEvent.CREATE == type)
        {
            final PK pk = event.getPk();
            //The AttributeFormat Model typecode is "11001"
            if (11001 == pk.getTypeCode())
            {
                final AttributeFormatModel attributeFormat = modelService.get(pk);
                updateProductFeatureByAttributeFormat(attributeFormat);
            }
         }
    }
}

创建了一个新的项目类型“AttributeFormat”,我正在根据它更新产品特征数据。

如果我从后台更新或创建属性格式,此侦听器可以正常工作,但当通过Impx导入数据时,它不能按预期工作。

弹劾-

INSERT_UPDATE AttributeFormat;code[unique=true];prefix[lang=$lang];suffix[lang=$lang];separator[lang=$lang];$classSystemVersion
;prefix_suffix_separator;<;change;,

当我导入这个Impex时,调用将转到AfterSaveListener,但预期的类型代码不会出现。如果(11001==pk.getTypeCode())块根本没有执行,则表示

我调试并发现其他一些媒体类型代码即将出现,但不是AttributeFormat。有人经历过同样的问题吗?

在第一次创建项目的情况下,AfterSaveListener使用正确的类型码值工作。无论何时属性格式将在第一次创建,侦听器都可以使用正确的类型码工作,如果块正在执行。但是在更新的情况下,它不起作用。


共有1个答案

丁业
2023-03-14

在hybris管理控制台中检查您的模型属性FormatModel的类型代码,通常情况下,我建议使用instanceof检查父类的类型代码

@Override
public void afterSave(final Collection<AfterSaveEvent> events)
{
    events.forEach(event -> {
        if (event.getType() == AfterSaveEvent.CREATE)
        {
            final PK pk = event.getPk();
            final Object object = getModelService().get(pk);
            if (object instanceof ManageTransportOfferingForScheduleConfigurationCronJobModel)
            {
                final ManageTransportOfferingForScheduleConfigurationCronJobModel cronjob =
                        (ManageTransportOfferingForScheduleConfigurationCronJobModel) object;
                cronjob.setActive(Boolean.TRUE);
                getCronJobService().performCronJob(cronjob, true);
            }
        }
    });
}
 类似资料:
  • 问题内容: 我真的没有得到这个,所以如果有人可以解释它是如何工作的,我将非常感激。我有两个应用程序,“帐户”和“主题” …这是我的设置列表: 在帐户中,我正在尝试执行以下操作: 在我的主题模型中: Django踢出以下错误: 这是某种循环进口问题吗?我尝试使用一个懒惰的引用,但这似乎也不起作用! 问题答案: 删除的导入,并将模型名称用作字符串。

  • 我尝试将其更改为XPath并使用以下命令://input[@id='p400_add_medium_but'] driver.findElement(by.xpath(“//input[@id='p400_add_medium_but']”)).click(); 但结果还是一样。我在IDE中回放了录制好的脚本,这工作很好。我应该提到测试必须在IE中运行(它是一个内部应用程序,IE是唯一在内部使用的

  • 问题内容: 我是Android新手。似乎仅是日蚀和SDK安装程序就已经存在太多问题了。我一直在研究Android开发人员网站上的示例,但它抛出一个错误: 导入android.support无法解析 我正在尝试导入以下内容: 我安装了三个最新的SDK平台版本,还安装了rev.10支持库。android.jar文件指向错误的文件夹吗?我找到了要导入的文件夹/文件,但我想知道它们是否在正确的位置。 C:

  • 我试图在非弹出模式下的create react应用程序中实现TypeScript代码共享,但我遇到了一个臭名昭著的限制,即不允许在之外导入: 对于非TypeScript的情况,已经问过这个问题 > 基于react应用重新布线的方法:更有前景。禁用可以让我通过“试图在src之外导入”错误,但现在的问题是,typescript文件的加载程序无法正常运行: 我已经验证了

  • 问题内容: 过去几天,我一直在进行故障排除,以尝试安装分发服务器,以便可以开始导入第三方模块。我已经有两年没有使用python了,所以我想起了所有很难的东西。 我将错误跟踪到给定的目录,但不知道下一步该怎么做。 我正在运行带有Eclipse 3.2的python 3.2的mac版本10.8.2。 这是代码: 问题答案: 要安装分发(和pip,virtualenv): 要激活virtualenv:

  • JIRA应用程序可用于将工作分解为问题。问题可以表示为任务,子任务,bud,epic,功能请求或其他工作。每个Jira软件都附带一些适合您的项目和团队的默认问题类型。 JIRA软件附带有三种类型的默认Jira问题类型: Jira Core(业务项目)问题类型 Jira Software(软件项目)问题类型 Jira服务台(服务台项目)问题类型 Jira Core问题类型 任务 - 任务是为完成团队