CommerceService が未定義か、Geometrixx がインストールされていないときは null です

問題点

次の例のように、リソースを CommerceService オブジェクトに適合させようとすると、例えば次のコードのように null または「undefined」が返されます。

var commerceService = resource. getResourceResolver(). adaptTo( com. adobe. cq. commerce. api.CommerceService); 

この場合、クラス com.adobe.cq.commerce.api.CommerceService は OSGi Class Loader で使用できます。これを検証するには、http://aem-host:port/system/console/depfinder のツールを使用して OSGi コンソールを参照してください。 

 

原因

この問題はデザイン時に発生します。

解決策

AEM Commerce APls を使用してアプリケーションを実装するときは、/apps/geometrixx-commons で提供される cq-geometrixx-commons-core バンドルで提供される独自のバージョンを実装します。

Geometrixx のものは単なるサンプルであり、セキュリティ上の理由から Geometrixx を製品にインストールすることはお勧めしません。CommerceServiceFactory の独自のバージョンを実装しない場合は、Geometrixx がインストールされていないと、上記の問題が生じます。 

次のパスの AEM に付属のサンプルソースコードを参照してください。

/apps/geometrixx-
commons/src/core/src/main/java/info/geometrixx/commons/impl/GeoCommerceServicelmpl.java 
/apps/geometrixx-
commons/src/core/src/main/java/info/geometrixx/commons/impl/GeoCommerceServiceFactory.java 
/apps/geometrixx-
commons/src/core/src/main/java/info/geometrixx/commons/impl/GeoCommerceSessionlmpl.java 
/apps/geometrixx-commons/src/core/src/main/java/info/geometrixx/commons/impl/productrelationships 
アドビのロゴ

アカウントにログイン