Wie kann man whitespaces im Tomcat mit Magnolia (CMS) oder OpenCms entfernen?

Wenn man mit Magnolia (CMS) oder OpenCms (oder generell mit JSPs) arbeitet kann man auf das Problem stoßen, dass man ungewollte Leerzeichen im HTML hat. Natürlich arbeitet man in Magnolia selten mit JSPs. Man kann dies leicht durch eine Anpassung in der web.xml verhindern:

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

Aber das funktioniert in OpenCms nicht, ich vermute wegen der Servlet-Version. Deshalb habe ich folgenden weg gewählt. Einfach diese Zeile an den Anfang jeder JSP schreiben.

<%@ page trimDirectiveWhitespaces="true" %>

Das ist nicht sehr elegant, aber funktioniert. Ich hatte nur keine Lust das für jede JSP per Hand zu machen, deshalb habe ich ein kleines Skript geschrieben.

for f in `find . -iname "*.jsp"`;
do
  echo file $f;
  sed -i.bak '1i\
<%@ page trimDirectiveWhitespaces=\"true\" %>
  ' ${f}
#echo $(head -n 1 $f)
done

Ich bin als Freiberufler für Magnolia (CMS)- oder OpenCms-Projekte verfügbar.