bugfix> hybris > 投稿

それが単なるimpexのために検証コードをトリガーする方法であるかどうかを知りたいです。つまり、私のコードは、バックオフィスではなくImpexを介して作成された新しい製品を検証する必要があるということです。ここに私のコードがあります:

@Override
public void onValidate(final Object o, final InterceptorContext ctx) throws InterceptorException
    if (o instanceof ProductModel)
    {
       final ProductModel product = (ProductModel) o;
       if (ctx.isNew(product))
        {
            final String manufacturerName = enumerationService.getEnumerationName(product.getManufacturerName()); // if ManufacturerName is Null  enumerationService throw "Parameter plainEnum must not be null!"
            final String code = product.getCode().toString();
            final String manufacturerProductId = product.getManufacturerProductId();
            final int a = productLookupService.getProduct(code, manufacturerName, manufacturerProductId);
                switch (a)
                {
                    case 1:
                        throw new InterceptorException("Product already in ProductLookup");
                    case 2:
                        throw new InterceptorException(
                                "There are more than one product with the same " + code + " number in ProductLookup !");
                    default:

                }
             }
       }

私の問題は、BackOfficeで新しい製品を作成するとき、manufacturerNameフィールドとmanufacturerProductIdフィールドがないことです。 ありがとう!そして、私が何か間違ったことを言ったら申し訳ありません、私はこれに新しいです:)

回答 1 件
  • 「BackOfficeでは、新しい製品を作成するとき、私は持っていませんメーカー名 そしてmanufacturerProductId 田畑"。 これはImpexにも当てはまります。ほとんどの場合、使用しているimpexはこれらの2つの属性を指定しているため、問題はありません。

    必要に応じて、この2つの属性を必須にすることができます。そうしないと、誰も製品を作成できません。メーカー名 広告manufacturerProductId。 また、これらの2つの属性は必須であるため、作成時にbackOfficeも更新されると考えています。

    属性が必須であることを指定できます{extensionName} -items.xml(あなたのタイプ定義の下で)を使用してオプショナル 以下のようなフラグ:

    <attribute qualifier="manufacturerProductId" type="String">
      <persistence type="property"/>
      <modifiers optional="false"/>
    </attribute>
    
    

    これらの2つの属性が必須ではない場合、それらを持たずに製品を作成する場合を考慮する必要があります(現在のbackOfficeの状況のように)。 ただし、インターセプターは考慮に入れる必要がありますどちらも ケース(あなたが持っているとき 作成時に指定されたこれらの属性としないとき

    このため、コードを編集して、この2つの属性がnullかどうかを使用前に確認できます。 manufacturerNameを取得する前に、これを追加できます。

    if (product.getManufacturerName() == null || product.getManufacturerProductId() == null) {
        return;
    }
    
    

あなたの答え