Bagaimana cara menghapus spasi ekstra dari keluaran halaman jsp? Apakah ada tombol yang dapat saya aktifkan di web.xml saya? Apakah ada pengaturan khusus Tomcat?
Bagaimana cara menghapus spasi ekstra dari keluaran halaman jsp? Apakah ada tombol yang dapat saya aktifkan di web.xml saya? Apakah ada pengaturan khusus Tomcat?
Jawaban:
Ada direktif trimWhiteSpaces yang harus melakukannya,
Di JSP Anda:
<%@ page trimDirectiveWhitespaces="true" %>
Atau di bagian jsp-config web.xml Anda (Perhatikan bahwa ini berfungsi mulai dari spesifikasi servlet 2.5.):
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<trim-directive-whitespaces>true</trim-directive-whitespaces>
</jsp-property-group>
</jsp-config>
Sayangnya jika Anda memiliki ruang yang diperlukan, mungkin juga perlu strip itu, jadi Anda mungkin memerlukan ruang non-breaking di beberapa lokasi.
web.xml
: <init-param> <param-name> trimSpaces </param-name> <param-value> true </param-value> </init-param>
Jika servletcontainer Anda tidak mendukung trimDirectiveWhitespaces
properti JSP 2.1 , Anda perlu membaca JspServlet
dokumentasinya untuk parameter inisialisasi. Misalnya , Tomcat , Anda juga dapat mengkonfigurasinya dengan mengatur trimSpaces
init-param ke true
dalam untuk JspServlet
di Tomcat /conf/web.xml
:
<init-param>
<param-name>trimSpaces</param-name>
<param-value>true</param-value>
</init-param>
Alternatif yang sama sekali berbeda adalah JTidyFilter . Ini tidak hanya memangkas spasi, tetapi juga memformat HTML dalam lekukan yang benar.
TrimDirectiveWhitespaces hanya didukung oleh wadah servlet yang mendukung JSP 2.1 dan setelahnya, atau dalam case atau Tomcat, Tomcat 6 (dan beberapa versi misalnya Tomcat 6.0.10 tidak mengimplementasikannya dengan benar - tidak tahu tentang yang lain). Ada lebih banyak informasi tentang trimDirectiveWhitespaces di sini:
http://www.oracle.com/technetwork/articles/javaee/jsp-21-136414.html
dan di sini
Bukan secara langsung apa yang Anda minta, tetapi yang membantu saya adalah meletakkan tag komentar HTML dengan cara yang cerdas di sekitar tag jsp saya, dan juga meletakkan spasi di dalam tag servlet (<%%>):
${"<!--"}
<c:if test="${first}">
<c:set var="extraClass" value="${extraClass} firstRadio"/>
</c:if>
<c:set var="first" value="${false}"/>
${"-->"}<%
%><input type="radio" id="input1" name="dayChooser" value="Tuesday"/><%
%><label for="input1" class="${extraClass}">Tuesday</label>
Anda dapat melangkah lebih jauh dan juga menghapus baris baru (carriage return) antara tag html pada waktu pembuatan.
Misalnya perubahan:
<p>Hello</p>
<p>How are you?</p>
ke:
<p>Hello</p><p>How are you?</p>
Lakukan itu, gunakan maven-replacer-plugin
dan setel di pom.xml
:
<plugin>
<groupId>com.google.code.maven-replacer-plugin</groupId>
<artifactId>replacer</artifactId>
<version>1.5.3</version>
<executions>
<execution>
<id>stripNewlines</id>
<phase>prepare-package</phase>
<goals>
<goal>replace</goal>
</goals>
<configuration>
<basedir>${project.build.directory}</basedir>
<filesToInclude>projectname/WEB-INF/jsp/**/*.jsp</filesToInclude>
<token>>\s*<</token>
<value>><</value>
<regexFlags>
<regexFlag>MULTILINE</regexFlag>
</regexFlags>
</configuration>
</execution>
</executions>
</plugin>
Ini hanya akan mengubah JSP di direktori build, dan tidak menyentuh JSP di sumber Anda.
Anda mungkin perlu menyesuaikan jalur ( <filesToInclude>
) tempat JSP Anda berada.
Silakan, gunakan fungsi trim, misalnya
fn:trim(string1)
Tambahkan / edit catalina.properties
file kucing jantan Anda dengan
org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false
Lihat juga: https://confluence.sakaiproject.org/display/BOOT/Install+Tomcat+7