从impex获取值到InitDefaultInterceptor Hybris

问题描述

我有一个impex文件(示例)

INSERT_UPDATE Subscriber;firstName[unique=false];lastName[unique=false];email[unique=true];bulk(code)[default=false]
;FirstName;lastName;email@gmail.com;true;

一个 InitDefaultInterceptor

 public class MyInterceptor implement InitDefaultInterceptor<SubscriberModel>{

onInitDefaults(SubscriberModel model,InterceptorContext ctx)
}

如何从拦截器中的impex 获取值?我尝试使用

model.getFirstName(); 
....

但所有方法都返回“null”。我该怎么做才能获得这些值?在将它们保存到数据库中之前,我需要实现一个逻辑。

解决方法

如果您想使用正在发送的值,您需要使用 PrepareInterceptor 而不是 InitDefaultInterceptor 拦截器。

  • InitDefaultInterceptor :初始化默认拦截器在模型填充其默认值时被调用。在您的情况下,这发生在创建要添加到数据库的对象的新实例时。此拦截器用于添加默认 值(在您已在 items.xml 中定义的值旁边)。此时仅插入在 items.xml 中标记的默认值。 此处不会加载您的impex 中的数据,因为这仅处理新对象的默认值,无论稍后将添加什么内容。

  • PrepareInterceptor :在将模型保存到数据库之前调用 Prepare Interceptor。使用它可以在保存之前向模型添加值或修改现有值。在这个拦截器中,impex 的值将填充在模型对象中。您可以根据您的用例在此处添加或修改您的数据。

有关所有拦截器类型的更多信息,SAP 的 help 页面描述了所有拦截器。