Adición de controladores y vistas específicas de la tienda

Personalice o amplíe la configuración de MVC Spring existente dentro del archivador web de tiendas personalizado. Se proporciona una guía paso a paso para configurar los controladores y las vistas de nivel de tienda.

Por qué y cuándo se efectúa esta tarea

Cuando accede a una página de tienda (o ejecuta una acción de controlador), la fundación de tienda remota intentará encontrar la correlación entre el URL dinámico actual (todos los URL de SEO se analizarán en un URL dinámico como este https://hostname:8443/wcs/shop/TopCategoriesDisplay?catalogId=10502&storeId=1&langId=-1) y el Bean de vista, definición de una página JSP). Seguiré la siguiente regla para encontrar el bean de vista.
  1. Busque la definición del bean de vista de nivel de tienda por el nombre TopCategoriesDisplay/<CurrentEsiteStoreIdentifer>. Representar esta página si obtiene el bean de vista. De lo contrario, vaya al paso #2).
    Nota: Si desea utilizar esta configuración de vista a nivel de eSite, debe poner la página JSP en el directorio de la tienda con los elementos correspondiente. Otra forma es configurar una vía de acceso completa de JSP relativa a la carpeta WebContent y añadir la propiedad storeDire = no. A continuación, se muestra el ejemplo de configuración.
    <bean id="TopCategoriesDisplay/Auroraesite" class="com.ibm.commerce.store.mvc.view.spring.StoreInternalResourceView"> 
        <property name="url" value="/<Auroraesite or any name>/ShoppingArea/CatalogSection/CategorySubsection/MyTopCategoriesDisplay.jsp"/>  
        <property name="https" value="1"/>  
        <property name="credentialsAccepted" value="P"/> 
        <property name="generic" value="1"/>
    <property name="storeDir" value="no"/>
      </bean>
    
  2. Busque la definición del bean de vista de tienda por el nombre TopCategoriesDisplay/<CurrentAssetStoreIdentifer>. Representar esta página si obtiene el bean de vista. De lo contrario, vaya al paso 3.
  3. Busque la definición del bean de vista a nivel de sitio por el nombre TopCategoriesDisplay. Representar esta página si obtiene el bean de vista. De lo contrario, vaya al paso 4).
  4. Vaya a la página de error de vista no encontrada.

Procedimiento

  1. Los controladores a nivel de sitio se guardan en crs-web\WebContent\WEB-INF\spring\controllers.xml y todos los controladores se comparten entre todas las tiendas. También puede definir un controlador específico de la tienda en el archivo controlllers-ext.xml e incluirlo en la parte inferior de controllers.xml.
    El contenido de crs-web\WebContent\WEB-INF\spring\controllers.xml tendrá un aspecto similar al siguiente:
    <import resource=”classpath:/WEB-INF/spring/AuroraStorefrontAssetStore/controllers-ext.xml”/>
    <import resource=”classpath:/WEB-INF/Spring/AuroraStoreB2BfrontAssetStore/controllers-ext.xml”/>
    <import resource=”classpath:/WEB-INF/spring/<your Store Directory Name>/controllers-ext.xml”/>
    
          <prop key=”/AjaxRESTUpdateMarketingTrackingConsent”>ajaxRESTUpdateMarketingTrackingConsent</prop>
        </props>
      </property>
    </bean>
    <bean class=”com.ibm.commerce.store.mvc.registry.spring.StoreUrlHandlerMapping” id=”viewUrlmapping”>
    …
      <property name=”order” value=”3”/>
    …
      <property name=”mappings”>
        <props>
    …
          <prop key=”/CategoryDisplay”>browsingController</prop>
          <prop key=”/TopCategoriesDisplay”>browsingController</prop>
          <prop key=”*”>viewController</prop>
       </props>
    </property>
    </bean>
    <import resource=”classpath:/WEB-INF/spring/AuroraStorefrontAssetStore/controllers-ext.xml”/>
    <import resource=”classpath:/WEB-INF/Spring/AuroraStoreB2BfrontAssetStore/controllers-ext.xml”/>
    <import resource=”classpath:/WEB-INF/spring/<your Store Directory Name>/controllers-ext.xml”/>
    
  2. 2. Cambie el archivo controllers-ext.xml a petición (/crs-web/WebContent/WEB-INF/spring/<StoreDirectoryName>/controllers-ext.xml) de acuerdo con el archivo de referencia (WEB-INF/spring/AuroraB2BStorefrontAssetStore/controllers-b2b-delta-template.xml o WEB-INF/spring/AuroraStorefrontAssetStore/controllers-b2c-delta-template.xml). El archivo se creará durante el proceso de publicación de la tienda y la variable @STORE_IDENTIFIER@ se sustituirá por el identificador de tienda. También puede definir su propio controlador de acuerdo con el patrón.
    <bean id="actionUrlmapping-@STORE_IDENTIFIER@" class="com.ibm.commerce.store.mvc.registry.spring.StoreUrlHandlerMapping"> 
        <property name="order" value="0"/>  
        <property name="mappings"> 
          <props> 
          	<!-- B2B delta controller config -->
            <prop key="/RESTOrderCalculate/@STORE_IDENTIFIER@">orderCalculate/@STORE_IDENTIFIER@</prop>  
            <prop key="/AjaxRESTOrderCalculate/@STORE_IDENTIFIER@">AjaxRESTOrderCalculate/@STORE_IDENTIFIER@</prop>  
            <prop key="/AjaxRESTOrderItemAdd/@STORE_IDENTIFIER@">ajaxOrderItemAdd/@STORE_IDENTIFIER@</prop>  
            <prop key="/RESTOrderItemAdd/@STORE_IDENTIFIER@">ajaxOrderItemAdd/@STORE_IDENTIFIER@</prop>
            <!-- Add customer controller url mappings here -->    
          </props> 
        </property> 
      </bean>  
      <bean id="viewUrlmapping-@STORE_IDENTIFIER@" class="com.ibm.commerce.store.mvc.registry.spring.StoreUrlHandlerMapping"> 
        <property name="order" value="2"/>  
        <property name="mappings"> 
          <props> 
          </props> 
        </property> 
      </bean> 
      <!-- B2B delta controller config -->
      <bean id="orderCalculate/@STORE_IDENTIFIER@" class="com.ibm.commerce.store.mvc.controller.spring.RESTActionController"> 
        <property name="authenticate" value="1"/>  
        <property name="https" value="1"/>  
        <property name="parameter" value="orderlist.calculateOrder"/> 
      </bean>  
      <bean id="AjaxRESTOrderCalculate/@STORE_IDENTIFIER@" class="com.ibm.commerce.store.mvc.controller.spring.AjaxRESTActionController"> 
        <property name="authenticate" value="1"/>  
        <property name="https" value="1"/>  
        <property name="parameter" value="orderlist.calculateOrder"/> 
      </bean>  
      <bean id="ajaxOrderItemAdd/@STORE_IDENTIFIER@" class="com.ibm.commerce.store.mvc.controller.spring.AjaxRESTActionController"> 
        <property name="authenticate" value="1"/>
        <property name="parameter" value="orderlist.addOrderItem"/>  
        <property name="https" value="1"/> 
      </bean>   
      <!-- Add customer controller bean definitions here -->       
    </beans>
    
  3. Los beans de vista a nivel de sitio (correlacionados con JSP) se guardan en crs-web\WebContent\WEB-INF\spring\views.xml y todas las vistas se comparten en todas las tiendas. También puede crear beans de vista específicos de la tienda y colocarlos en el archivo crs-web\WebContent\WEB-INF\spring\StoreDirectoryName\views-ext.xml. Pero debe incluir elviews-ext.xml in crs-web\WebContent\WEB-INF\spring\views.xml
    <import resource=”classpath:/WEB-INF/spring/AuroraStorefrontAssetStore/views-ext.xml”/>
    <import resource=”classpath:/WEB-INF/spring/AuroraB2BStorefrontAssetStore/views-ext.xml”/>
    <import resource=”classpath:/WEB-INF/spring/Your Store Directory Name/views-ext.xml”/>
    
  4. Cambie el archivo crs-web\WebContent\WEB-INF\spring\<StoreDirectoryName>\views-ext.xml a petición según los archivos de referencia (/crs-web/WebContent/WEB-INF/spring/AuroraB2BStorefrontAssetStore/views-b2b-delta-template.xml o /crs-web/WebContent/WEB-INF/spring/AuroraStorefrontAssetStore/views-b2c-delta-template.xml). Debe sustituir la variable @STORE_IDENTIFIER@ por el identificador de tienda.
      <!-- B2B delta view config -->
      <bean id="QuickOrderView/@STORE_IDENTIFIER@" class="com.ibm.commerce.store.mvc.view.spring.StoreInternalResourceView"> 
        <property name="url" value="/ShoppingArea/OrderCreationSection/QuickOrderSubsection/QuickOrderForm.jsp"/>  
        <property name="credentialsAccepted" value="P"/>  
        <property name="authenticate" value="1"/> 
      </bean>
      <bean id="AjaxOrderItemDisplayView/@STORE_IDENTIFIER@" class="com.ibm.commerce.store.mvc.view.spring.StoreInternalResourceView"> 
        <property name="url" value="/ShoppingArea/ShopcartSection/OrderItemDisplay.jsp"/>  
        <property name="https" value="1"/>  
        <property name="credentialsAccepted" value="P"/>  
        <property name="authenticate" value="1"/> 
        <property name="generic" value="1"/>
      </bean>
      <!-- Special bean for B2B store to use https for all pages. This is necessary for organization and contract to be displayed correctly in header. -->  
      <bean id="HttpsRequiredForAllViews/@STORE_IDENTIFIER@" class="com.ibm.commerce.store.mvc.view.spring.StoreInternalResourceView">  
        <property name="https" value="1"/>  
        <property name="url" value=""/>
      </bean>