Ajout de contrôleurs et de vues spécifiques au magasin

Personnalisez ou étendez votre configuration MVC Spring existante dans l'archive Web des magasins personnalisés. Un guide étape par étape est fourni pour configurer les contrôleurs et les vues au niveau du magasin.

Pourquoi et quand exécuter cette tâche

Lorsque vous accédez à une page de magasin (ou exécutez une action de contrôleur), la fondation du magasin à distance essaie de trouver le mappage entre l'URL dynamique actuelle (toute l'URL de référencement sera analysée dans une URL dynamique comme celle-ci https://hostname:8443/wcs/shop/TopCategoriesDisplay?catalogId=10502&storeId=1&langId=-1)) et le bean de vue (définition d'une page JSP). Je vais suivre la règle suivante pour trouver le bean de vue.
  1. Trouvez la définition de bean de vue de niveau magasin par nom TopCategoriesDisplay/<CurrentEsiteStoreIdentifer>. Affichez cette page si vous obtenez le beau d'affichage. Sinon, passez à l'étape #2).
    Remarque : Si vous souhaitez utiliser cette configuration de vue de niveau esite, vous devez placer votre page JSP dans le répertoire du magasin de ressources correspondant. Vous pouvez également configurer un chemin d'accès complet de JSP par rapport au dossier WebContent et ajouter la propriété storeDire=no. Voici l'exemple de configuration.
    <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. Trouvez la définition de bean de vue de magasin par nom TopCategoriesDisplay/<CurrentAssetStoreIdentifer>. Affichez cette page si vous obtenez le beau d'affichage. Sinon, passez à l'étape #3.
  3. Trouvez la définition de bean de vue de niveau site par nom TopCategoriesDisplay. Affichez cette page si vous obtenez le beau d'affichage. Sinon, passez à l'étape #4).
  4. Accédez à la page d'erreur Vue demandée introuvable.

Procédure

  1. Les contrôleurs de niveau site sont enregistrés dans crs-web\WebContent\WEB-INF\spring\controllers.xml et tous les contrôleurs sont partagés dans tous les magasins. Vous pouvez également définir des contrôleurs spécifiques au magasin dans le fichier controlllers-ext.xml et les inclure en bas de controllers.xml.
    Le contenu de crs-web\WebContent\WEB-INF\spring\controllers.xml ressemblera à ce qui suit :
    <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. Modifiez le fichier controllers-ext.xml à la requête (/crs-web/WebContent/WEB-INF/spring/<StoreDirectoryName>/controllers-ext.xml) en fonction du fichier de référence (WEB-INF/spring/AuroraB2BStorefrontAssetStore/controllers-b2b-delta-template.xml ou WEB-INF/spring/AuroraStorefrontAssetStore/controllers-b2c-delta-template.xml). Le fichier sera créé pendant le processus de publication du magasin et la variable @STORE_IDENTIFIER@ sera remplacée par l'identificateur du magasin. Vous pouvez également définir votre propre contrôleur en fonction du modèle.
    <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. Les beans de vue de niveau site (mappés à JSP) sont enregistrés dans crs-web\WebContent\WEB-INF\spring\views.xml et toutes les vues sont partagées dans tous les magasins. Vous pouvez également créer des beans de vue spécifiques au magasin et les placer dans le fichier crs-web\WebContent\WEB-INF\spring\StoreDirectoryName\views-ext.xml. Mais vous devez inclure views-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. Modifiez le fichier crs-web\WebContent\WEB-INF\spring\<StoreDirectoryName>\views-ext.xml à la requête en fonction du fichier de référence (/crs-web/WebContent/WEB-INF/spring/AuroraB2BStorefrontAssetStore/views-b2b-delta-template.xml ou /crs-web/WebContent/WEB-INF/spring/AuroraStorefrontAssetStore/views-b2c-delta-template.xml). Vous devez remplacer la variable @STORE_IDENTIFIER@ par votre identificateur de magasin.
      <!-- 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>