Hybris:如何将我的 jsp 标签添加到位于另一个扩展中的另一个 jsp 标签中
Hybris: how to add my jsp tag inside another jsp tag which locates in another extention
我创建了插件和 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
之后出现在店面中。
埃琳娜
首先,您需要将标签放置在 WEB-INF\tags 中的任意子文件夹下。我看你已经放在那里了。
其次,您需要将您的标签导入任何其他 jsp 或如下标签。
<%@ taglib prefix="myOwnTag" tagdir="/WEB-INF/tags/custom/folder/" %>
在tagdir中,不要提及标签名称,直到目录为止
它在里面。所以在你的情况下,这将是 <%@ taglib prefix="myOwnTag"
tagdir="WEB-INF\tags\desctop\product" %>
在 jsp 或其他标签中使用如下标签
<prefix-mentioned-above:name-of-the-tag/>
在你的情况下,这将是
<myOwnTag:productList/>
检查我在图片中的代码。
我创建了一个 year.tag
,我在 other.tag
中使用了它,我在 index.jsp
页面中使用了它。
希望这可以帮助您如何在 jsp 和另一个标签中使用标签。
如果您想编辑 html 页面内容而不更改店面文件,您有 2 个选择:
- 使用现有内容槽并向其添加 cms components/actions。您可以在插件中创建 components/actions 并使用 impex/cms cockpit 将这些组件添加到您的内容槽中。此选项非常有限,因为您受限于现有内容槽。 more
- 在插件中创建一个全新的页面并覆盖店面中的页面。此选项涉及从 A 到 B 的大量复制内容,我不推荐它。如果没有真正充分的理由使用此选项,请考虑选项 1 或更改 storefont 中的文件。
more
在很多情况下,更改店面中 jsp 文件的内容几乎是不可避免的。
我创建了插件和 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
之后出现在店面中。
埃琳娜
首先,您需要将标签放置在 WEB-INF\tags 中的任意子文件夹下。我看你已经放在那里了。
其次,您需要将您的标签导入任何其他 jsp 或如下标签。
<%@ taglib prefix="myOwnTag" tagdir="/WEB-INF/tags/custom/folder/" %>
在tagdir中,不要提及标签名称,直到目录为止 它在里面。所以在你的情况下,这将是
<%@ taglib prefix="myOwnTag" tagdir="WEB-INF\tags\desctop\product" %>
在 jsp 或其他标签中使用如下标签
<prefix-mentioned-above:name-of-the-tag/>
在你的情况下,这将是
<myOwnTag:productList/>
检查我在图片中的代码。
我创建了一个 year.tag
,我在 other.tag
中使用了它,我在 index.jsp
页面中使用了它。
希望这可以帮助您如何在 jsp 和另一个标签中使用标签。
如果您想编辑 html 页面内容而不更改店面文件,您有 2 个选择:
- 使用现有内容槽并向其添加 cms components/actions。您可以在插件中创建 components/actions 并使用 impex/cms cockpit 将这些组件添加到您的内容槽中。此选项非常有限,因为您受限于现有内容槽。 more
- 在插件中创建一个全新的页面并覆盖店面中的页面。此选项涉及从 A 到 B 的大量复制内容,我不推荐它。如果没有真正充分的理由使用此选项,请考虑选项 1 或更改 storefont 中的文件。 more
在很多情况下,更改店面中 jsp 文件的内容几乎是不可避免的。