海布里斯 6.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”,我正在基于它更新产品特征数据。
如果我从后台更新或创建 AttributeFormat,此侦听器工作正常,但在通过 impex 导入数据时它无法按预期工作。
英派克 -
INSERT_UPDATE AttributeFormat;code[unique=true];prefix[lang=$lang];suffix[lang=$lang];separator[lang=$lang];$classSystemVersion
;prefix_suffix_separator;<;change;,
当我导入这个 Impex 时,调用将转到 AfterSaveListener,但预期的类型代码没有到来。意味着if (11001 == pk.getTypeCode())
块根本没有执行。
我调试并发现一些其他媒体类型代码即将到来,但不是 AttributeFormat。有没有人遇到过同样的问题?
更新 :
在第一次创建项目的情况下,AfterSaveListener 使用正确的类型代码值。每当第一次创建 AttributeFormat 时,侦听器都可以使用正确的类型代码和 if 块正在执行。但在更新的情况下,它不起作用。