Actualización de la tienda de inicio Aurora para la división de clave

La característica de la división de clave podría potencialmente exponer algunos problemas de codificación JavaScript en las páginas JSP de la tienda. Las páginas JSP que han pasado o inicializado variables JSTL de claves primarias del objeto (o identificadores) en variables JavaScript como enteros pueden estar sujetas a un comportamiento imprevisto en el escaparate.

Por ejemplo:

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

El problema con el fragmento de código anterior reside en que la variable JavaScript que se inicializa se trata como un entero. En JavaScript, el valor entero más alto es 9 007 199 254 740 992. Al realizar la división de clave, el rango es mucho más alto que esto y puede causar problemas en JavaScript. Los síntomas son que los números probablemente más altos tienen más posibilidades de ignorarse y el límite de umbral provoca un comportamiento inesperado en el escaparate. Por ejemplo, si añade un artículo al carro de la compra puede añadir un producto no deseado al carro de la compra.

Procedimiento

  • El uso de una serie en JavaScript resuelve este problema. Por consiguiente, el código de ejemplo anterior se actualiza a:
    
    <script>
    	var catentryId = "<c:out value="${WCParam.productId}"/>";
    </script>
    
    Donde encapsular el valor entre comillas (") garantiza que el valor sea una serie.
  • Si utiliza división de clave y la tienda de inicio Aurora, debe actualizar JavaScript según convenga.

    Deben actualizarse los archivos siguientes:

    1. Para la tienda de inicio Aurora:
      WC_eardir/Stores.war/storedir/Widgets/Header/Header_UI.jspfxc_workspace_dir\crs-custom-web\WebContent\storedir\Widgets\Header\Header_UI.jspf
      Cambiar
      
      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
      Cambiar
      
      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
      Cambiar
      
      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
      Cambiar
      
      CompareProductJS.add2ShopCart(${catEntryType.key},1,${catEntryId});"
      
      A:
      
      CompareProductJS.add2ShopCart('${catEntryType.key}',1,'${catEntryId}');"