我正在尝试使用ProductLookup小滴在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>
但是,在将产品ID传递到的href标签时,我遇到了问题dsp:a。结果HTML已硬编码${id}为display_product.jsp?itemId=${id}。我正在获取产品列表,但是URL是我面临的问题。如何将值传递element.id到的href属性中dsp:a?
href
dsp:a
${id}
display_product.jsp?itemId=${id}
element.id
我也尝试了以下方法,但没有成功。
1。
<dsp:a href="display_product.jsp?itemId=<%=out.print(element.id) %>">
2。
<dsp:a href="display_product.jsp?itemId=<%=out.print(id) %>">
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>
要将参数传递到另一个页面,您只需<dsp:param>按照下面的代码片段(位于您的ProductLookup小滴内)使用标记即可:
<dsp:param>
这是老式的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>
首选方法是使用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>
我recursive="false"在上面的示例中使用过,因为您仅引用产品的直接属性。如果要引用属性的属性,则可以执行以下操作(下面的代码未经测试,但应该可以大致了解):
recursive="false"
<dsp:tomap var="product" param="element" recursive="true"/> <dsp:img page="${ product.image.url }">
更新:
令我惊讶的是,即使是最基本的事情(例如传递参数),也很少有人知道如何去做,因此我包括了其他DSP标签,这些标签可与 <dsp:param>
您可以为包含的JSP片段传递参数,这些片段使用 <dsp:include>
<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>
这种方法也适用于以下标签:
<dsp:iframe>
<dsp:img>
<dsp:link>