Creación de un archivo JSP de serialización para transformar la información de URL para la vista previa contextual

Cree un archivo JSP de serialización para recuperar elementos de autoría de tablas de base de datos para el nuevo objeto y visualizar estos elementos en la vista previa de la tienda. El archivo JSP de serialización formatea nombres que se reciben desde un archivo JSP de controlador en el formato XML que requiere la infraestructura del Centro de gestión para completar la dirección de vista previa de la tienda.

Nota: La creación de un archivo JSP de serialización sólo es uno de los diversos modos de transformar la información de URL en XML. Es posible que tenga servicios o métodos personalizados para transformar información de URL. Por ejemplo, si tiene un código wcf url personalizado que devuelve información de URL en el formato esperado, no se requiere un archivo JSP de serialización. Puede implementar el código url en el archivo JSP de controlador.

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

Una JSP del controlador envía los nombres de respuestas BOD a un archivo JSP de serialización para el formato XML. El archivo JSP de serialización se utiliza para recibir propiedades de objeto desde nombres y transforma esta información de URL a un formato esperado para utilizarlo en la vista previa de la tienda del Centro de gestión. El formato esperado tiene la forma siguiente:
<objects>
	<object>
		<alias>aliasName</alias>
		<url>objectURL</url>
	</object>
</objects>
nombreAlias
Un alias de la página.
objectURL
URL completo de la página.

Procedimiento

  1. En la vista Explorador de empresa, expanda LOBTools > WebContent > jsp > your_company_name > component_name.
  2. Pulse el botón derecho del ratón en la carpeta component_name y seleccione Nuevo > Archivo.
  3. En el campo Nombre de archivo, escriba un nombre para el nuevo archivo JSP, incluida la extensión .jspf y pulse Finalizar. Para garantizar la coherencia y para hacer más sencilla la personalización, contemple convenios de denominación de archivos tales como: SerializeObjectNamePageSeoUrl.jspf.
    Por ejemplo, para un objeto de recopilación de recetas, denomine al archivo JSP SerializeRecipeCollectionPageSeoUrl.jspf.
  4. Añada las definiciones para el objeto en el archivo JSP de serialización.
    El código siguiente es un archivo JSP de serialización de ejemplo que transforma la información de URL de objeto de entrada de catálogo en XML:
    <jsp:useBean id="seoUrlKeywordList" class="java.util.HashMap" type="java.util.Map"/>
    <jsp:useBean id="seoPrefixUrlList" class="java.util.HashMap" type="java.util.Map"/>
    <jsp:useBean id="inheritedSeoUrlKeywordList" class="java.util.HashMap" type="java.util.Map"/>
    
    1
    <c:forEach var="seoURL" items="${catentry.SEOURL}">
    	<c:set var="inherited" value=""/>
    		
    	<c:if test="${seoURL.parentStoreIdentifier.uniqueID != currentStoreId}">
    		<c:set var="inherited" value="Inherited"/>
    	</c:if>
    	
    	<c:forEach var="seoURLKeyword" items="${seoURL.URLKeyword}">
    		<c:if test="${seoURLKeyword.language != null}">
    			<c:choose>
    				<c:when test="${inherited != '' }">
    					<c:if test="${seoURLKeyword.keyword != null && seoURLKeyword.keyword != ''}">
    						<c:set target="${inheritedSeoUrlKeywordList}" property="${seoURLKeyword.language}" 
    							value="${seoURLKeyword.keyword}"/>
    					</c:if>
    				</c:when>
    				<c:otherwise>
    					<c:if test="${seoURLKeyword.keyword != null && seoURLKeyword.keyword != ''}">
    						<c:set target="${seoUrlKeywordList}" property="${seoURLKeyword.language}" 
    							value="${seoURLKeyword.keyword}"/>
    					</c:if>
    					<c:if test="${seoURLKeyword.URLPrefix != null && seoURLKeyword.URLPrefix != ''}">
    						<c:set target="${seoPrefixUrlList}" property="${seoURLKeyword.language}" 
    						value="${seoURLKeyword.URLPrefix}"/>
    					</c:if>
    				</c:otherwise>
    			</c:choose>		
    		</c:if>
    	</c:forEach>
    </c:forEach>
    
    <c:set var="fullUrl" value=""/>
    <c:set var="urlKeyword" value=""/>
    
    2
    <c:forEach var="language" items="${supportedDataLangIds}">
    	<c:choose>
    		<c:when test="${(seoUrlKeywordList[language] != '' && seoUrlKeywordList[language] != null) 
    			&& seoPrefixUrlList[language] != ''}">
    			<c:set var="fullUrl" value="${fn:replace(seoPrefixUrlList[language],'$SEO:PRIMARYTOKEN$'
    				,seoUrlKeywordList[language])}"/>
    			<c:set var="urlKeyword" value="${seoUrlKeywordList[language]}"/>
    		</c:when>
    		<c:when test="${(seoUrlKeywordList[language] == '' || seoUrlKeywordList[language] == null) 
    			&& seoPrefixUrlList[language] != '' && !empty (inheritedSeoUrlKeywordList[language])}">
    			<c:choose>
    				<c:when test="${fn:contains(seoPrefixUrlList[language],'$SEO:STORETOKEN$')}">
    					<c:set var="isAssetStore" value="true"/>
    				</c:when>
    				<c:otherwise>
    					<c:set var="fullUrl" value="${fn:replace(seoPrefixUrlList[language],
    						'$SEO:PRIMARYTOKEN$',inheritedSeoUrlKeywordList[language])}"/>
    					<c:set var="urlKeyword" value="${inheritedSeoUrlKeywordList[language]}"/>
    				</c:otherwise>
    				</c:choose>
    		</c:when>
    		<c:otherwise>
    			<c:set var="fullUrl" value=""/>
    		</c:otherwise>
    	</c:choose>
    	<c:if test="${urlKeyword != '' && fullUrl != ''}">
    		<object>
    			<alias><wcf:cdata data="${storeName} - ${urlKeyword}"/></alias>  (xml tags useddby the getpreviewurlservice.
    			<url><wcf:cdata data="${fullUrl}"/></url>
    		</object>
    	</c:if>
    </c:forEach>
    • 1 El código siguiente entre los códigos <c:for> procesa la información de URL SEO del nombre devuelto para almacenar el prefijo de URL del objeto de entrada de catálogo y palabras clave por idioma.
    • 2 El código siguiente entre los códigos <c:for> procesa cada idioma soportado de la tienda y construye la URL completo y el alias del objeto de entrada de catálogo en la representación de la dirección de la tienda para visualizar en el diálogo Opciones de vista previa de la tienda del Centro de gestión.