Har*_*ala 4 java jsp atg atg-droplet oracle-commerce
我正在尝试使用ProductLookup Droplet在jsp中显示产品列表,如下所示.我还试图给出一个超链接,以导航到单个产品的产品详细信息页面.
<dsp:droplet name="/atg/commerce/catalog/ProductLookup">
<dsp:param param="element.id" name="id"/>
<dsp:oparam name="output"><br/>
<dsp:a href="display_product.jsp?itemId=${id}">
Product display Name:
<b><dsp:valueof param="element.displayName"/></b><br/>
Product description Name:
<dsp:valueof param="element.description"/>
</dsp:a>
</dsp:oparam>
</dsp:droplet>
Run Code Online (Sandbox Code Playgroud)
但是,我在将产品的ID传递给href标签时遇到问题dsp:a.生成的HTML已硬编码${id}为display_product.jsp?itemId=${id}.我正在获取产品列表,但URL是我面临问题的地方.如何将值element.id传入href属性dsp:a?
我也试过以下,但没有成功.
1.
<dsp:a href="display_product.jsp?itemId=<%=out.print(element.id) %>">
Run Code Online (Sandbox Code Playgroud)
2.
<dsp:a href="display_product.jsp?itemId=<%=out.print(id) %>">
Run Code Online (Sandbox Code Playgroud)
3.
<dsp:getvalueof var="id" id="id" >
<dsp:a href="display_product.jsp?itemId=${id}">
Product display Name:
<b><dsp:valueof param="element.displayName"/></b><br/>
Product description Name:
<dsp:valueof param="element.description"/>
</dsp:a>
</dsp:getvalueof>
Run Code Online (Sandbox Code Playgroud)
要将参数传递到另一个页面,您只需<dsp:param>按照下面的代码片段使用该标记(嵌套在ProductLookup Droplet中):
这是老式的ATG方法:
<dsp:a href="display_product.jsp">
Product Name: <b><dsp:valueof param="element.displayName"/></b><br/>
Product description: <dsp:valueof param="element.description"/>
<%-- this will pass the itemId parameter and value--%>
<dsp:param name="itemId" param="element.id"/>
</dsp:a>
Run Code Online (Sandbox Code Playgroud)
首选方法是使用jstl EL变量,使jsp更清晰,更易于阅读,并在引用值时提供更大的灵活性:
<%-- name the "element" and convert to a map --%>
<dsp:tomap var="product" param="element" recursive="false"/>
<dsp:a href="display_product.jsp">
Product Name: <b>${ product.displayName }</b><br/>
Product description: ${ product.description }
<dsp:param name="itemId" value="${ product.id }"/>
</dsp:a>
Run Code Online (Sandbox Code Playgroud)
我recursive="false"在上面的示例中使用过,因为您只引用了产品的直接属性.如果你想引用属性的属性,那么你可以做这样的事情(下面的代码没有经过测试,但应该给你一般的想法):
<dsp:tomap var="product" param="element" recursive="true"/>
<dsp:img page="${ product.image.url }">
Run Code Online (Sandbox Code Playgroud)
更新:
我仍然惊讶于很少有人理解如何做最基本的事情,如传递参数,我已经包括其他DSP标签,可以与 <dsp:param>
您可以为包含的JSP片段传递参数 <dsp:include>
<dsp:tomap var="product" param="element" recursive="false"/>
<dsp:include page="fragments/myfragment.jsp">
<dsp:param name="itemId" value="${ product.id } />
</dsp:include>
Run Code Online (Sandbox Code Playgroud)
这种方法也适用于这些标签:
<dsp:iframe><dsp:img><dsp:link>| 归档时间: |
|
| 查看次数: |
2789 次 |
| 最近记录: |