Поскольку Турбьерн уже ответил на причину, я отвечу только на решение, поскольку вы, скорее всего, избавитесь от этого раздражения.
Вы можете настроить свой сервлет-контейнер на обрезку пробелов, оставшихся после обработки сценариев и библиотек тегов. Например, в Apache Tomcat вы можете сделать это, открыв /conf/web.xml
, направляясь к определению <servlet>
сервлета JSP, которое выглядит следующим образом для Tomcat 7
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
добавить <init-param>
из trimSpaces=true
следующим образом к определению <servlet>
сервлета JSP:
<init-param>
<param-name>trimSpaces</param-name>
<param-value>true</param-value>
</init-param>
Перезапустите Tomcat, и этот пробел должен исчезнуть. По крайней мере, большая часть исчезнет. Вам нужно только позаботиться о том, чтобы пробел, который вы ввели самостоятельно , также был физически удален из JSP.
См. Также JSP engine HOW-TO . Довольно все остальные сервлетконтейнеры имеют аналогичную конфигурацию. Обратитесь к их документации, используя ключевое слово "отделочные пространства".
Что касается общего подхода, я бы предложил преобразовать эту вещь в класс Java и вместо этого сделать из нее функцию EL. Смерть скриптлетам .
<c:out value="${my:prettyTime(date)}" />