我开始使用JSTL-spring。这很棒,但我需要查看它生成的HTML代码。我有一个方法将所有HTML代码附加到字符串,所以当我<c:out>
字符串打印一个大行时,浏览器会解释它很好,但不是我,我需要,准确地调试和制作一个干净的代码。
换句话说,我需要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 :(得分:3)
有两种方法:
这实际上是特定于servletcontainer,但根据您的问题历史记录,您正在使用Tomcat 。将以下初始化参数添加到JspServlet
中的Tomcat/conf/web.xml
条目。
<init-param>
<param-name>trimSpaces</param-name>
<param-value>true</param-value>
</init-param>
这样,将修剪taglibs(JSTL等)留下的任何空格。这并不完美,但通常就足够了。然而,这不包括写在错误位置的HTML(即不在JSP中)。
使用jTidyFilter
。在/WEB-INF/lib
中删除jtidyservlet.jar,并按照its documentation在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输出;))。