Develop > Controller layer > Management Center Web application > Customize the Management Center Web application > Extend existing objects


Ovveride a retrieve service for a Management Center object

To override an existing retrieve service, create a new controller JSP page and a new Struts action forward.

The new controller JSP page retrieves and mediates the Management Center object. The new Struts action forward points to the new controller JSP page.

To create the new controller JSP page and Struts action forward:


Procedure

  1. Identify the Management Center object read operation to override by identifying the Management Center service operation to override. Use the naming convention to identify the Struts action forward and the controller JSP file. For example, to identify which controller JSP file is used by the Catalog Entry Advanced Search:

    1. Open the Catalog Entry Search definition class. This class was located in the FindAllCatalogEntriesSearchDefinition.lzx file in Extend the Advanced Search dialog to include extended properties as search.

    2. In the wcfSearchService section, specify the value of the URL property: url="/cmc/FindCatalogEntries-All". The URL property means that the Struts action is invoked by the search service.

    3. Navigate to LOBTools > WebContent > WEB-INF and double-click the struts-ibm-tools.xml file to open it in the default editor.

      Do not change this XML file since it might be replaced in a fix pack.

    4. Locate the action definition in the action-mappings section by searching for FindCatalogEntries-All. The search result is:

      <!-- Catalog Tool Search Definitions -->
      <!-- ========= -->
      <action path="/FindSKUs" forward="/jsp/commerce/catalog/restricted/FindSKUs.jsp" />
      <action path="/FindKits" forward="/jsp/commerce/catalog/restricted/FindKits.jsp" />
      <action path="/FindDynamicKits" forward="/jsp/commerce/catalog/restricted/FindDynamicKits.jsp" />
      <action path="/FindBundles" forward="/jsp/commerce/catalog/restricted/FindBundles.jsp" />
      <action path="/FindProducts" forward="/jsp/commerce/catalog/restricted/FindProducts.jsp" />
      <action path="/FindSalesCategories" forward="/jsp/commerce/catalog/restricted/FindSalesCategories.jsp" />
      <action path="/FindCatalogEntries-ExceptSKUs" forward="/jsp/commerce/catalog/restricted/FindAllCatalogEntriesExceptSKUs.jsp" />
      <action path="/FindCategories-All" forward="/jsp/commerce/catalog/restricted/FindAllCategories.jsp" /> <action path="/FindCatalogEntries-All" forward="/jsp/commerce/catalog/restricted/FindAllCatalogEntries.jsp" />
      <action path="/FindCatalogs" forward="/jsp/commerce/catalog/restricted/FindCatalogs.jsp" />
      

      The search result for FindCatalogEntries-All indicates that the controller JSP file to be extended is /jsp/commerce/catalog/restricted/FindAllCatalogEntries.jsp.

  2. Open WebSphere Commerce Developer.

  3. Navigate to the LOBTools project.

  4. Create a new directory under the WebContent/jsp directory to contain the customized JSP files. For example, WebContent/jsp/myComponent.

  5. Create a JSP file that determines whether to handle the request or to forward it to the IBM-supplied JSP file. If the JSP file determines that the request should be handled, it must also specify how to handle the request. For example:

    1. Navigate to LOBTools > WebContent > jsp.

    2. To create the JSP extension folder, right-click jsp and select New > Folder.

    3. In the Folder name field, type mycompany, click Next, and then click Finish.

    4. In the mycompany directory create a folder called catalog.

    5. To create the extension controller JSP file, right-click the catalog folder and select New > File.

    6. In the File name field, type FindAllCatalogEntries-WithWarrentyCriteria.jsp, and then click Finish.

    7. Copy the following code into the FindAllCatalogEntries-WithWarrentyCriteria.jsp file:

      <?xml version="1.0" encoding="UTF-8"?>
      <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
      <%@ taglib uri="http://commerce.ibm.com/foundation" prefix="wcf"%>
      <%-- Decide which expression builder to call based on the input --%> 
      <wcf:getData
        type="com.ibm.commerce.catalog.facade.datatypes.CatalogEntryType[]"
        var="catentries" expressionBuilder="findMyCompanyAdvancedSearch"
        varShowVerb="showVerb"
        recordSetStartNumber="${param.recordSetStartNumber}"
        recordSetReferenceId="${param.recordSetReferenceId}"
        maxItems="${param.maxItems}">  
      <wcf:contextData name="storeId" data="${param.storeId}" />  
      <wcf:contextData name="catalogId" data="${catalog}" />  
      <wcf:param name="shortDescription" value="" />  
      <wcf:param name="mfPartNumber" value="${param.mfPartNumber}" />  
      <wcf:param name="mfName" value="${param.manufacturer}" />  
      <wcf:param name="groupIdentifier" value="${param.parentCategory}" /> 
       
      <c:if test="${param.wartermSelection != 'null'}">    
      <c:set var="warterm" value="${param.wartermSelection}" />  
      </c:if>  
      <wcf:param name="wartermSelection" value="${warterm}" /> 
       
      <c:if test="${param.wartypeSelection != 'null'}">    
      <c:set var="wartype" value="${param.wartypeSelection}" />  
      </c:if>  
      <wcf:param name="wartypeSelection" value="${wartype}" /> 
      
       
      <wcf:param name="partNumber" value="${catentryCode}" />  
      <wcf:param name="name" value="${catentryName}" /> 
       
      <c:set var="productExp" value="ProductBean" />  
      <c:set var="bundleExp" value="BundleBean" />  
      <c:set var="kitExp" value="PackageBean" />  
      <c:set var="dynamicKitExp" value="DynamicKitBean" />  
      <c:set var="SKUExp" value="ItemBean" /> 
       
      <c:if test="${(empty param.published)}">    
      <wcf:param name="published" value="" />  
      </c:if> 
       
      <c:if test="${param.published == '1'}">    
      <wcf:param name="published" value="1" />  
      </c:if> 
       
      <c:if test="${param.published == '2'}">    
      <wcf:param name="published" value="0" />  
      </c:if> 
       
      <c:if test="${param.published == '3'}">    
      <wcf:param name="published" value="" />  
      </c:if> 
       
      <c:if test="${(empty param.catentryTypes)}">    
      <wcf:param name="catEntryTypes"
            value="${productExp},${bundleExp},${kitExp},${dynamicKitExp},${SKUExp}" />  
      </c:if>  
      <c:if test="${param.catentryTypes == '1'}">    
      <wcf:param name="catEntryTypes"
            value="${productExp},${bundleExp},${kitExp},${dynamicKitExp}" />  
      </c:if>  
      <c:if test="${param.catentryTypes == '2'}">    
      <c:set var="typeParam" value="" /> 
         
      <c:if test="${param.typeProducts == 'true'}">      
      <c:if test="${typeParam != ''}">        
      <c:set var="typeParam" value="${typeParam}," />      
      </c:if>      
      <c:set var="typeParam" value="${typeParam}${productExp}" />    
      </c:if> 
         
      <c:if test="${param.typeBundles == 'true'}">      
      <c:if test="${typeParam != ''}">        
      <c:set var="typeParam" value="${typeParam}," />      
      </c:if>      
      <c:set var="typeParam" value="${typeParam}${bundleExp}" />    
      </c:if> 
         
      <c:if test="${param.typeKits == 'true'}">      
      <c:if test="${typeParam != ''}">        
      <c:set var="typeParam" value="${typeParam}," />      
      </c:if>      
      <c:set var="typeParam" value="${typeParam}${kitExp},${dynamicKitExp}" />    
      </c:if> 
         
      <c:if test="${param.typeSKUs == 'true'}">      
      <c:if test="${typeParam != ''}">        
      <c:set var="typeParam" value="${typeParam}," />      
      </c:if>      
      <c:set var="typeParam" value="${typeParam}${SKUExp}" />    
      </c:if> 
         
      <wcf:param name="catEntryTypes" value="${typeParam}" />  
      </c:if> 
      </wcf:getData>
      <jsp:directive.include
        file="../../commerce/catalog/restricted/serialize/SerializeCatalogEntries.jspf" />
      

      The JSP file uses the new expression Builder, findMyCompanyAdvancedSearch, to get data that will be defined later in the Create a new expression builder to override a default expression builder step.

  6. Implement the new get-data expression and forward to the existing serialization JSP file.

  7. Navigate to the WebContent/WEB-INF directory, open the struts-ibm-tools.xml file, and then locate the Struts action forward that to customize.

  8. Copy the Struts action forward configuration to the struts-extension.xml file and update the Struts action forward path attribute to point to the new controller JSP page.

  9. Deploy your changes to the production environment.


Related information

Tutorial: Adding new search conditions in the advanced search of the Catalogs tool


+

Search Tips   |   Advanced Search