Как заставить JSTL-spring генерировать чистый HTML-код? - PullRequest
1 голос
/ 28 ноября 2010

Я начинаю работать с JSTL-spring.Это замечательно, однако мне нужно просмотреть HTML-код, который он генерирует.У меня есть метод, который добавляет к строке весь HTML-код, поэтому, когда я <c:out> строку, она печатает одну большую строку, браузер интерпретирует это нормально, но не я, и мне нужно, чтобы точно отладить и сделать чистуюcode.

Другими словами, мне нужны разрывы строк для строки 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" />

1 Ответ

3 голосов
/ 28 ноября 2010

Есть два способа:

  1. На самом деле это зависит от сервлет-контейнера, но, исходя из истории ваших вопросов, вы используете Tomcat .Добавьте следующий параметр инициализации к записи JspServlet в Tomcat/conf/web.xml.

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

    Таким образом, любые пробелы, оставленные тегами (JSTL и т. Д.), Будут обрезаны.Это не идеально, но в целом достаточно.Это, однако, не распространяется на HTML, который написан не в том месте (то есть не в JSP).

  2. Используйте jTidyFilter.Оставьте jtidyservlet.jar в /WEB-INF/lib и объявите фильтр в вашем Webapp/WEB-INF/web.xml согласно его документации .


ComingВернемся к комментарию, что вы подходите неправильно: правильным подходом было бы поместить List<Product> в область запроса (при необходимости, bean-компонентом Spring) и использовать 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;)).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...