Personalización de configuraciones de controlador

Si está creando sus propios objetos personalizados o herramientas en el Management Center o personalizando objetos y herramientas existentes, puede que necesite definir o ampliar las configuraciones de Spring Framework. Estas configuraciones definen cómo las peticiones de URL del Management Center se correlacionan con las clases de controlador y los archivos JSP para manejar las peticiones.

Antes de empezar

Determine el nombre de la petición de URL que está correlacionando con un mandato de controlador. Debe especificar este nombre como el valor para el atributo id en la configuración de controlador personalizada. Este nombre se define en el archivo de definición de objeto donde se define el objeto o la vista que está asociado con la petición de URL.
Si desea alterar la correlación del servicio de búsqueda que recupera entradas de catálogo para la búsqueda avanzada, el nombre de petición de URL se define en el archivo de definición de búsqueda FindAllCatalogEntriesSearchDefinition.xml.

<SearchService name="findAllCatalogEntries" url="/cmc/FindCatalogEntries-All">
  <ServiceParam name="storeId"/>
  <ServiceParam name="masterCatalogId"/> 
  <ServiceParam name="defaultLanguageId"/>
</SearchService>
El nombre de petición de URL está en el valor del atributo url en la definición de servicio. Este valor también incluye el nombre de paquete, /cmc. Solo necesita la parte de nombre de URL del valor de atributo url, que para esta petición de URL es FindCatalogEntries-All. En la configuración de controlador correspondiente para esta petición de URL en el archivo de configuración spring-ibm-catalog.xml, el valor del atributo id coincide con el valor para el atributo url en la definición de servicio de búsqueda.

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

Procedimiento

  1. Abra HCL Commerce Developer
  2. En la vista Explorador de empresa, expanda LOBTools > WebContent > WEB-INF
  3. Abra el archivo spring-extension.xml para editarlo.
  4. Complete uno de los procedimientos siguientes
    OpciónDescripción
    Para alterar una configuración existente
    1. Abra el archivo spring-ibm-component.xml que incluye la configuración que desea alterar.
    2. Localice y copie la configuración de controlador que desea alterar para un objeto o una vista.
    3. Añada la configuración copiada en el archivo spring-extension.xml como un elemento secundario directo del elemento <beans>.
    Para definir una nueva configuración
    1. Dentro del archivo spring-extension.xml, añada una definición de elemento <bean> como un elemento secundario directo del elemento <beans>.
    2. Incluya un atributo id para el nuevo <bean> y establezca el valor en el nombre de la petición de servicio de URL.
  5. Establezca o cambie el valor para el atributo class.
    Este atributo identifica la clase de controlador que debe utilizarse para procesar la petición.

    Por ejemplo, la clase com.ibm.commerce.foundation.client.facade.bod.servlet.spring.BusinessObjectDocumentController se utiliza para transferir objetos entre los nombres Management Center y HCL Commerce. Si tiene que transferir objetos, por ejemplo en peticiones de servicio BOD de cambio o proceso, incluya esta clase en la configuración.

  6. Establezca o cambie las propiedades para la configuración en los elementos <property>.
    Estas propiedades definen la información que se puede pasar al controlador acerca de la petición de URL.
    Por ejemplo, puede incluir propiedades para configurar los siguientes tipos de información que se debe pasar al controlador:
    • Información que identifica el objeto de URL y los parámetros de configuración que se deben utilizar para procesar la petición.
    • Acciones que deben realizarse en el objeto de URL, como crear, cambiar o eliminar el objeto.
    • Archivos JSP de respuesta que se necesitan utilizar para generar la respuesta con formato XML que se debe devolver a Management Center. Si la petición de URL espera una vista diferente basándose en los resultados del proceso de la acción que está asociada con la petición, puede incluir propiedades diferentes para cada vista prevista. Por ejemplo, puede tener una propiedad successView y failureView con cada valor de propiedad que identifica la JSP adecuada.

    Cada propiedad debe definirse en un elemento <property> independiente. Cada elemento debe incluir el atributo name para identificar el nombre de la propiedad. Puede incluir un atributo value para indicar el valor de la propiedad o incluir un subelemento <props> para proporcionar una lista de parámetros que se deben pasar al controlador de la propiedad. Puede incluir los parámetros, como el ID de tienda, ID de idioma y el ID de catálogo, como propiedades anidadas en el elemento <props>. Incluya cada propiedad anidada como un subelemento <prop> independiente, con el formato <prop key="name">value</prop>, donde name es el nombre del parámetro y value es el valor del parámetro.

    El fragmento de código siguiente muestra un ejemplo de un elemento <property> con un valor y un elemento <property> con una lista de subelementos <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. Guarde y cierre el archivo.

Ejemplo

Los siguientes fragmentos de código de ejemplo muestran configuraciones de controlador de Spring que incluyen propiedades para configurar un servicio BOD de cambio y para configurar un servicio BOD de proceso.
  • BOD de cambio
    
    <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>
  • BOD de proceso
    	
    <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>