Представленный jsp канала пролистывает htmltidy

У меня есть проект Java, работающий на Glassfish, который представляет некоторый ужасно выглядящий HTML. Это - побочный эффект от пользования различными внутренними и внешними библиотеками JSP. Я хотел бы настроить своего рода фильтр пострендеринга, который подаст заключительный HTML через HTMLTidy так, чтобы источник был хорош и аккуратен для помощи отладке. Действительно ли это возможно?

Существует ли созданный в механизме для выполнения некоторого действия после того, как сервер представит JSPs в HTML? То действие может получить сгенерированный HTML как строку и управлять им? Есть ли некоторая легкая встроенная опция сделать это без дополнительного кодирования?

7
задан Freiheit 2 February 2010 в 18:41
поделиться

3 ответа

5
ответ дан 7 December 2019 в 05:22
поделиться

Если вы можете изменить контрольный поток, чтобы вы получили выход HTML, прежде чем он вернутся в браузер, то JTIDY может помочь вам.

Я бы рассматривал это как худшее исправление, хотя. В долгосрочной перспективе тому, что должно помочь больше, - это отделить свой HTML-код генерации и рефакторов. Даже в крупных сложных проектах вы должны быть в состоянии сделать это на небольших частях, и вы получите постепенное улучшение. В противном случае, если ваши проблемы растут до такой степени, что опрятный не может помочь, вы вернетесь к тому, где вы начали (и с еще более ремнируемым кодом, чтобы иметь дело с).

0
ответ дан 7 December 2019 в 05:22
поделиться

Это поведение также может быть устранено в определенной степени путем установки свойства JSP 2.1 trimDirectiveWhitespaces в true. Это может быть включено в отдельных файлах JSP с помощью:

<%@page trimDirectiveWhitespaces="true" %>

Или во всех файлах JSP с помощью следующей записи в web.xml (которая должна быть объявлена серветом 2.5!):

<jsp-config>
    <jsp-property-group>
        <url-pattern>*.jsp</url-pattern>
        <trim-directive-whitespaces>true</trim-directive-whitespaces>
    </jsp-property-group>
</jsp-config>

В файлах до версии JSP 2. 1 или в контейнерах JSP 2.1, которые на самом деле не поддерживают это по некоторым внутренним причинам, таким как Tomcat, вам необходимо обратиться к документации JspServlet для любых параметров инициализации. Например Tomcat, вы можете настроить его также, установив trimSpaces init-парамер JspServlet в true в Tomcat'е /conf/web.xml:

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

Следует отметить, что оба подхода на самом деле не "переформатируют" HTML-код. На самом деле, он только обрезает пробелы, которые оставляют тэги и скриплеты. Также смотрите эту статью о Sun. Так что, например, следующее...

<ul>
    <c:forEach items="${list}" var="item">
        <li>${item}</li>
    </c:forEach>
</ul>

... в основном закончится в

<ul>
        <li>item1</li>
        <li>item2</li>
        <li>item3</li>
</ul>

, таким образом, с двойным отступом. На самом деле, вы можете исправить это, переформатировав код таким образом, что JSP-тэги полу-индентифицированы:

<ul>
  <c:forEach items="${list}" var="item">
    <li>${item}</li>
  </c:forEach>
</ul>

Но я думаю, что JTidyFilter здесь проще :)

.
3
ответ дан 7 December 2019 в 05:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: