對不起,詳細的標題,但它是一個詳細的問題。我試圖與CMS進行接口,但由我的自定義標記生成的HTML除了保存在JSTL變量中之外,還將輸出到頁面。我甚至不知道我想達到什麼是可能的。JSTL c:設置自定義JSP標記用於ATG存儲庫查找
<%-- promo.tag --%>
<%@ tag display-name="PromoMap Lookup Tag" body-content="empty" %>
<%@ attribute name="id" required="true" description="" %>
<%@ attribute name="elName" required="true" description="" %>
<%@ taglib uri="/dspTaglib" prefix="dsp" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<dsp:importbean bean="/promo/PromoMapLookup"/>
<dsp:droplet name="PromoMapLookup">
<dsp:param name="id" value="${id}"/>
<dsp:param name="elementName" value="${elName}"/>
<dsp:oparam name="output">
<c:set var="html"><dsp:valueof param="promo.html" valueishtml="true"/></c:set>
<c:set var="html" value="${fn:trim(html)}"/>
<c:if test="${not fn:endsWith(html, '-->') and not empty html}">
${html}
</c:if>
</dsp:oparam>
<dsp:oparam name="empty">
<%-- Nothing retrieved for promo slot id --%>
</dsp:oparam>
</dsp:droplet>
...然後調用頁面,使上述所有HTML這樣的電話:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="pro" %>
<c:set var="masthead"><pro:promo id="287" elName="promo" /></c:set>
...some html...
${masthead}
的elName
屬性是內部的,所以不用擔心。所以,PromoMapLookup
吐出的html會被保存到變量中,但它會在調用c:set
標記的頁面上呈現,除了在頁面後面引用該變量的位置之外。結果是頁面上兩個地方的html相同。我有一種感覺,這與編譯/渲染的順序有關,但我無法弄清楚。有任何想法嗎?
哪些你想做什麼?Promo.html是一個文件的名字或者是在PromoMapLookup中設置的輸出變量的名字問題是你想把它保存到一個變量中而不是顯示兩次?另外, m沒有看到兩個代碼片段之間的連接。你的tld是什麼樣的? – xdhmoore 2013-03-26 03:14:31