2010-11-28 66 views
1

我開始使用JSTL-spring。這很棒,但是我需要查看它生成的HTML代碼。我有一個方法將字符串附加到所有的HTML代碼中,所以當我輸入字符串時,它會打印出一大行代碼,瀏覽器可以很好地解釋它,但不是我,我需要準確地進行調試並製作一個乾淨的代碼。如何讓JSTL-spring生成乾淨的HTML代碼?

換句話說,我需要HTML字符串的換行符,而不是解釋html的換行符(不是<br>標籤)。我試過/n,但它只是打印/n。下面是代碼示例:

productThumbnails+="<div class=\"prod_box\">"; 
    productThumbnails+="<div class=\"top_prod_box\"></div>"; 
    productThumbnails+="<div class=\"center_prod_box\">"; 
     productThumbnails+="<div class=\"product_title\"><a href=\"details.html\">"+productTemp.getProductName()+"</a></div>"; 
     productThumbnails+="<div class=\"product_title\"><a href=\"details.html\">"+productTemp.getProductModel()+"</a></div>"; 
     productThumbnails+="<div class=\"product_img\"><a href=\"details.html\"><img width=\"90\" alt=\""+productTemp.getProductName()+"\" src=\""+productTemp.getProductImage()+"\"/></a></div>"; 
    productThumbnails+="</div>"; 
productThumbnails+="</div>"; 

在視圖中,我打印的一切有:

<c:out value="${productThumbnails}" escapeXml="false" /> 
+0

你的問題不太清楚 - 你是否試圖打印呈現的某個頁面的HTML代碼?你不希望HTML代碼被瀏覽器處理? – anirvan 2010-11-28 17:50:39

+0

不,我希望irs最終生成的html代碼能夠被我讀取,導致我這樣做的方式,它將所有內容粘貼在一行中,當我想檢查它需要很長時間的錯誤時。 – Ernest 2010-11-29 15:32:21

回答

3

有兩種方式:

  1. 這實際上servletcontainer是特定的,但基於您使用Tomcat的問題歷史記錄。將下面的初始化參數添加到Tomcat/conf/web.xml中的JspServlet條目。

    <init-param> 
        <param-name>trimSpaces</param-name> 
        <param-value>true</param-value> 
    </init-param> 
    

    這樣,任何由taglibs(JSTL等)留下的空白都將被修剪。這並不完美,但通常是足夠的。但是,這不包括寫在錯誤位置(即不在JSP中)的HTML。使用jTidyFilter。根據its documentation/WEB-INF/lib中刪除jtidyservlet.jar並在您的Webapp/WEB-INF/web.xml中聲明過濾器。


再回到你正在接近這個錯誤註釋:正確的做法是把List<Product>在要求範圍內(如果必要的話通過Spring Bean),並使用JSTL <c:forEach>遍歷它。

<c:forEach items="${products}" var="product"> 
    ... 
    <div class="center_prod_box"> 
     <div class="product_title"><a href="details.html"><c:out value="${product.productName}" /></a></div> 
     <div class="product_title"><a href="details.html"><c:out value="${product.productModel}" /></a></div> 
     <div class="product_img"><a href="details.html"><img width="90" alt="${product.productName}" src="${product.productImage}"/></a></div> 
    </div> 
    ... 
</c:forEach> 

這產生更乾淨和更好的可維護代碼(和HTML輸出;))。