Mise à jour du magasin type Aurora pour fractionner les clés

La fonction de fractionnement des clés peut exposer certains problèmes de code JavaScript dans les pages JSP du magasin. Les pages JSP qui ont servi à transmettre ou initialiser des variables JSTL des clés principales de l'objet (ou identificateurs) dans les variables JavaScript comme entiers peuvent être soumises à un comportement inattendu dans la vitrine.

Par exemple :

<script>
	var catentryId = <c:out value="${WCParam.productId}"/>;
</script>

Lorsque le problème concernant le fragment de code ci-dessus est que la variable JavaScript en cours d'initialisation est traitée comme un entier. Dans JavaScript, la valeur d'entier la plus élevée est 9 007 199 254 740 992. Lors du fractionnement de clés, la plage est bien plus importante, ce qui entraîne des problèmes dans le code JavaScript. Les symptômes sont que les numéros supérieurs sont susceptibles d'être ignorés et le seuil entraîne un comportement inattendu dans la vitrine. Par exemple, l'ajout d'un article au panier peut ajouter un produit inattendu dans le panier à la place.

Procédure

  • L'utilisation d'une chaîne dans le code JavaScript résout ce problème. Par conséquent, l'exemple de code précédent est mis à jour sur :
    
    <script>
    	var catentryId = "<c:out value="${WCParam.productId}"/>";
    </script>
    
    où l'encapsulation de la valeur entre guillemets (") permet de s'assurer que la valeur est une chaîne.
  • Si vous utilisez le fractionnement de clés et le magasin type Aurora, vous devez mettre à jour le code JavaScript en conséquence.

    Les fichiers ci-dessous doivent être mis à jour :

    1. Pour le magasin type Aurora :
      WC_eardir/Stores.war/storedir/Widgets/Header/Header_UI.jspfxc_workspace_dir\crs-custom-web\WebContent\storedir\Widgets\Header\Header_UI.jspf
      Modifier
      
      analyticsJS.storeId=<c:out value="${storeId}"/>;
      analyticsJS.catalogId=<c:out value="${catalogId}"/>;
      
      A :
      
      analyticsJS.storeId="<c:out value="${storeId}"/>";
      analyticsJS.catalogId="<c:out value="${catalogId}"/>";
      
      WC_eardir/Stores.war/storedir/Layouts/SearchResultsDisplay.jspxc_workspace_dir\crs-custom-web\WebContent\storedir\ShoppingArea\CatalogSection\SearchSubsection\SearchResultsDisplay.jsp
      Change
      
      analyticsJS.storeId=<c:out value="${storeId}"/>;
      analyticsJS.catalogId=<c:out value="${catalogId}"/>;
      
      A :
      
      analyticsJS.storeId="<c:out value="${storeId}"/>";
      analyticsJS.catalogId="<c:out value="${catalogId}"/>";
      
      WC_eardir/Stores.war/storedir/Snippets/Order/Cart/OrderItemDetail.jspxc_workspace_dir\crs-custom-web\WebContent\storedir\Snippets\Order\Cart\OrderItemDetail.jsp
      Change
      
      analyticsJS.storeId="<c:out value=${WCParam.storeId}" />;
      analyticsJS.catalogId="<c:out value=${WCParam.catalogId}" />;
      
      A :
      
      analyticsJS.storeId="<c:out value="${WCParam.storeId}" />";
      analyticsJS.catalogId="<c:out value="${WCParam.catalogId}" />";
      
      WC_eardir/Stores.war/storedir/Widgets/CompareProduct/CompareProduct_UI.jspfxc_workspace_dir\crs-custom-web\WebContent\storedir\Widgets\CompareProduct\CompareProduct_UI.jspf
      Change
      
      CompareProductJS.add2ShopCart(${catEntryType.key},1,${catEntryId});"
      
      A :
      
      CompareProductJS.add2ShopCart('${catEntryType.key}',1,'${catEntryId}');"