问题描述
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)
}
model.getFirstName();
....
但所有方法都返回“null”。我该怎么做才能获得这些值?在将它们保存到数据库中之前,我需要实现一个逻辑。
解决方法
如果您想使用正在发送的值,您需要使用 PrepareInterceptor
而不是 InitDefaultInterceptor
拦截器。
-
InitDefaultInterceptor
:初始化默认拦截器在模型填充其默认值时被调用。在您的情况下,这发生在创建要添加到数据库的对象的新实例时。此拦截器用于添加默认 值(在您已在 items.xml 中定义的值旁边)。此时仅插入在 items.xml 中标记的默认值。 此处不会加载您的impex 中的数据,因为这仅处理新对象的默认值,无论稍后将添加什么内容。 -
PrepareInterceptor
:在将模型保存到数据库之前调用 Prepare Interceptor。使用它可以在保存之前向模型添加值或修改现有值。在这个拦截器中,impex 的值将填充在模型对象中。您可以根据您的用例在此处添加或修改您的数据。
有关所有拦截器类型的更多信息,SAP 的 help 页面描述了所有拦截器。