Hybris:如何在另一个位于另一个扩展中的jsp标记中添加我的jsp标记

问题描述 投票:0回答:2

我创建了addon和jsp标签,它位于:bin \ custom \ Myaddon \ acceleratoraddon \ web \ webroot \ WEB-INF \ tags \ desctop \ product \ productList.tag

这是productList.tag的代码:

 <%@ tag body-content="empty" trimDirectiveWhitespaces="true" %>
 <%@ attribute name="product" required="true" type="de.hybris.platform.commercefacades.product.data.ProductData" %>

 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
 <%@ taglib prefix="ycommerce" uri="http://hybris.com/tld/ycommercetags" %>


 <div class="addmybutton">
       <form id="add_to_list_form" action="${addToListUrl}" method="post">
        <input name="code" type="hidden" value="${product.code}"/>
        <input name="isPostponed" type="hidden" value="false"/>
        <input type="hidden" name="CSRFToken" value="${CSRFToken.token}">
        <button id="add_to_list_submit_button" type="submit" class="b-btn b-btn--red i-fs14"><spring:theme
                code="text.addToMyList"/></button>
    </form>
  </div>

我如何使这个jsp标签出现在位于店面的jsp页面(或任何jsp标签)中?

例如,如果我想将我的jsp标签添加到productLayout1Page.jsp(在我们创建店面扩展时自动创建)。

productLayout1Page.jsp:bin \ custom \ myModule \ myModulestorefront \ web \ webroot \ WEB-INF \ views \ responsive \ pages \ product \ productLayout1Page.jsp的位置

这是productLayout1Page.jsp的代码:

 <%@ page trimDirectiveWhitespaces="true"%>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 <%@ taglib prefix="template" tagdir="/WEB-INF/tags/responsive/template"%>
 <%@ taglib prefix="cms" uri="http://hybris.com/tld/cmstags"%>
 <%@ taglib prefix="product" tagdir="/WEB-INF/tags/responsive/product"%>

</cms:pageSlot>
<product:productDetailsPanel />
<cms:pageSlot position="CrossSelling" var="comp" element="div" class="productDetailsPageSectionCrossSelling">
    <cms:component component="${comp}" element="div" class="productDetailsPageSectionCrossSelling-component"/>
</cms:pageSlot>

<cms:pageSlot position="Section2" var="comp" element="div" class="productDetailsPageSection2">
    <cms:component component="${comp}" element="div" class="productDetailsPageSection2-component"/>
</cms:pageSlot>

<cms:pageSlot position="Section3" var="comp" element="div" class="productDetailsPageSection3">
    <cms:component component="${comp}" element="div" class="productDetailsPageSection3-component"/>
</cms:pageSlot>
<cms:pageSlot position="UpSelling" var="comp" element="div" class="productDetailsPageSectionUpSelling">
    <cms:component component="${comp}" element="div" class="productDetailsPageSectionUpSelling-component"/>
</cms:pageSlot>
<product:productPageTabs />
<cms:pageSlot position="Section4" var="comp" element="div" class="productDetailsPageSection4">
    <cms:component component="${comp}" element="div" class="productDetailsPageSection4-component"/>
</cms:pageSlot>

我应该只为我的插件添加代码。所有更改应仅在ant all之后出现在店面上。

java jsp jsp-tags hybris
2个回答
0
投票

如果要编辑页面的html内容而不更改店面文件,则有2个选项:

  1. 使用现有内容槽并向其添加cms组件/操作。您可以在插件中创建组件/操作,并使用impex / cms cockpit将​​这些组件添加到内容插槽中。此选项非常有限,因为您受限于现有内容插槽。 more
  2. 在插件中创建一个全新的页面并覆盖店面中的页面。此选项会从A到B中复制很多内容,我不会推荐它。如果没有真正合理的理由使用此选项,请考虑选项1或更改storefont中的文件。 more

在很多情况下,几乎不可避免地要改变店面中jsp文件的内容。


3
投票

埃琳娜

  1. 首先,您需要将标记放在WEB-INF \ tags中的任何子文件夹下。我看到你已经放在那里了。
  2. 其次,您需要在任何其他jsp或标签中导入您的标签,如下所示。 <%@ taglib prefix="myOwnTag" tagdir="/WEB-INF/tags/custom/folder/" %> 在tagdir中,不要提及标签名称,只要离开它所在的目录。所以在你的情况下这将是<%@ taglib prefix="myOwnTag" tagdir="WEB-INF\tags\desctop\product" %>
  3. 使用下面的标记,无论是在jsp还是其他标记中 <prefix-mentioned-above:name-of-the-tag/> 在你的情况下,这将是 <myOwnTag:productList/>

检查图像中的代码。我创建了一个year.tag,我用在other.tag页面中使用的index.jsp

check my code here

希望这可以帮助您如何在jsp和其他标签中使用标签。

© www.soinside.com 2019 - 2024. All rights reserved.