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

时间:2018-01-01 16:28:37

标签: java jsp jsp-tags hybris

我创建了addon和jsp标签,它位于: BIN \定制\ Myaddon \ acceleratoraddon \网络\根目录\ WEB-INF \标签\ desctop \产品\ 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 \定制\ Mymodule中\ myModulestorefront \网络\ webroot的\ WEB-INF \意见\响应\网页\产品\ 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之后显示在店面上。

2 个答案:

答案 0 :(得分:3)

埃琳娜

  1. 首先,您需要将标签放在WEB-INF \标签中的任何子文件夹下。我看到你已经放在那里了。

  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/>

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

    check my code here

    希望这可以帮助您如何在jsp和另一个标签中使用标签。

答案 1 :(得分:0)

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

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