Personnalisation des configurations de contrôleur

Si vous créez vos propres objets ou outils personnalisés dans Management Center ou personnalisez des objets et des outils existants, vous devrez peut-être définir ou étendre les configurations d'infrastructure Spring. Ces configurations définissent la façon dont les requêtes URL de Management Center mappent aux classes de contrôleur et aux fichiers JSP pour gérer les requêtes.

Avant de commencer

Déterminez le nom de la requête URL que vous mappez à une commande de contrôleur. Vous devez spécifier ce nom comme valeur de l'attribut id dans votre configuration de contrôleur personnalisée. Ce nom est défini dans le fichier de définition d'objet où l'objet ou l'affichage associé à la requête URL est défini.
Si vous souhaitez remplacer le mappage du service de recherche qui récupère les entrées de catalogue pour la recherche avancée, le nom de la requête URL est défini dans le fichier de définition de recherche FindAllCatalogEntriesSearchDefinition.xml.

<SearchService name="findAllCatalogEntries" url="/cmc/FindCatalogEntries-All">
  <ServiceParam name="storeId"/>
  <ServiceParam name="masterCatalogId"/> 
  <ServiceParam name="defaultLanguageId"/>
</SearchService>
Le nom de requête URL se trouve dans la valeur de l'attribut url dans la définition de service. Cette valeur inclut également le nom du package, /cmc. Vous n'avez besoin que de la partie name de l'URL de la valeur d'attribut url, qui pour cette requête URL est FindCatalogEntries-All. Dans la configuration de contrôleur correspondante pour cette requête URL dans le fichier de configuration spring-ibm-catalog.xml, la valeur de l'attribut id correspond à la valeur de l'attribut url dans la définition de service de recherche.

<bean id="/FindCatalogEntries-All" class="org.springframework.web.servlet.mvc.ParameterizableViewController">
  <property name="viewName" value="/jsp/commerce/catalog/restricted/FindAllCatalogEntries.jsp"/>
</bean>

Procédure

  1. Ouvrir les discussions vocales HCL Commerce Developer
  2. Dans la vue Explorateur d'entreprise, développez LOBTools > WebContent > WEB-INF
  3. Ouvrez le fichier spring-extension.xml pour l'éditer.
  4. Suivez l'une des méthodes suivantes
    OptionDescription
    Pour remplacer une configuration existante
    1. Ouvrez le fichier spring-ibm-component.xml qui inclut la configuration que vous souhaitez remplacer.
    2. Recherchez et copiez la configuration du contrôleur que vous souhaitez remplacer pour un objet ou une vue.
    3. Ajoutez votre configuration copiée dans le fichier spring-extension.xml en tant qu'élément enfant direct de l'élément <beans> de niveau supérieur.
    Pour définir une nouvelle configuration
    1. Dans le fichierspring-extension.xml, ajoutez une définition d'élément <bean> en tant qu'élément enfant direct de l'élément <beans> de niveau supérieur.
    2. Incluez un attribut id pour votre nouveau <bean> et définissez la valeur comme nom de la requête de service URL.
  5. Définissez ou modifiez la valeur de l'attribut class.
    Cet attribut identifie la classe de contrôleur à utiliser pour traiter la demande.

    Par exemple, la classe com.ibm.commerce.foundation.client.facade.bod.servlet.spring.BusinessObjectDocumentController est utilisée pour transférer des objets entre des noms Management Center et HCL Commerce. Si vous devez transférer des objets, dans les requêtes de service BOD de modification ou de traitement, incluez cette classe dans votre configuration.

  6. Définissez ou modifiez les propriétés de la configuration dans les éléments <property>.
    Ces propriétés définissent les informations qui peuvent être transmises au contrôleur au sujet de la requête URL.
    Par exemple, vous pouvez inclure des propriétés pour configurer les types d'informations suivants à transmettre au contrôleur :
    • Informations qui identifient l'objet URL et les paramètres de configuration à utiliser pour traiter la requête.
    • Actions à effectuer sur l'objet URL, par exemple pour créer, modifier ou supprimer l'objet.
    • Réponses aux fichiers JSP qui doivent être utilisés pour générer la réponse au format XML pour revenir à Management Center. Si votre requête URL attend à une vue différente en fonction des résultats du traitement de l'action associée à la requête, vous pouvez inclure des propriétés différentes pour chaque vue attendue. Par exemple, vous pouvez avoir une propriété successView et failureView avec chaque valeur de propriété identifiant le JSP approprié.

    Chaque propriété d'étape est définie par un élément <property> distinct. Chaque élément doit inclure l'attribut name pour identifier le nom de la propriété. Vous pouvez inclure un attribut value pour indiquer la valeur de la propriété ou inclure un sous-élément <props>pour fournir une liste de paramètres à transmettre au contrôleur de la propriété. Vous pouvez inclure les paramètres, tels que l'ID de magasin, l'ID de langue et l'ID de catalogue, en tant que propriétés imbriquées dans l'élément <props>. Incluez chaque propriété imbriquée comme sous-élément <prop> distinct, avec le format <prop key="name">value</prop>, où name est le nom du paramètre et value est la valeur pour le paramètre.

    L'extrait de code suivant montre un exemple d'élément <property> avec une valeur et d'élément <property> avec une liste de sous-éléments <prop>.

    
    <property name="urlObject" value="CatalogEntryDescription"/>
    <property name="contextParameters">
        <props>
          <prop key="storeId">storeId</prop>
          <prop key="langId">langId</prop>
          <prop key="masterCatalogId">catalogId</prop>
        </props>
      </property>
      <property name="verb" value="Change"/>
  7. Enregistrez et fermez le fichier.

Exemple

Les exemples de fragments de code suivants montrent les configurations de contrôleur Spring qui incluent les propriétés pour la configuration d'un service BOD de modification et d'un service BOD de traitement.
  • Service BOD de modification (Change)
    
    <bean id="/CreateCatalogEntryDescription" class="com.ibm.commerce.foundation.client.facade.bod.servlet.spring.BusinessObjectDocumentController">
      <property name="urlObject" value="CatalogEntryDescription"/>
      <property name="contextParameters">
        <props>
          <prop key="storeId">storeId</prop>
          <prop key="langId">langId</prop>
          <prop key="masterCatalogId">catalogId</prop>
        </props>
      </property>
      <property name="verb" value="Change"/>
      <property name="documentRootFactory" value="com.ibm.commerce.catalog.facade.datatypes.CatalogFactory"/>
      <property name="clientLibrary" value="com.ibm.commerce.catalog.facade.client.CatalogFacadeClient"/>
      <property name="clientLibraryMethod" value="changeCatalogEntry"/>
      <property name="actionCode" value="Change"/>
    </bean>
  • Service BOD de traitement (Process)
    	
    <bean id="/CreateCatalogEntry" class="com.ibm.commerce.foundation.client.facade.bod.servlet.spring.BusinessObjectDocumentController">
      <property name="urlObject" value="CatalogEntry"/>
      <property name="contextParameters">
        <props>
          <prop key="storeId">storeId</prop>
          <prop key="langId">langId</prop>
          <prop key="masterCatalogId">catalogId</prop>
        </props>
      </property>
      <property name="verb" value="Process"/>
      <property name="documentRootFactory" value="com.ibm.commerce.catalog.facade.datatypes.CatalogFactory"/>
      <property name="clientLibrary" value="com.ibm.commerce.catalog.facade.client.CatalogFacadeClient"/>
      <property name="clientLibraryMethod" value="processCatalogEntry"/>
      <property name="actionCode" value="Create"/>
      <property name="var" value="catalogEntries"/>
      <property name="successView" value="/jsp/commerce/catalog/restricted/RespondCreateCatalogEntry.jsp"/>
    </bean>