Làm cách nào để loại bỏ khoảng trắng thừa từ đầu ra của các trang jsp? Có công tắc nào tôi có thể lật trên web.xml của mình không? Có cài đặt cụ thể cho Tomcat không?
Làm cách nào để loại bỏ khoảng trắng thừa từ đầu ra của các trang jsp? Có công tắc nào tôi có thể lật trên web.xml của mình không? Có cài đặt cụ thể cho Tomcat không?
Câu trả lời:
Có một chỉ thị trimWhiteSpaces sẽ thực hiện điều này,
Trong JSP của bạn:
<%@ page trimDirectiveWhitespaces="true" %>
Hoặc trong phần jsp-config web.xml của bạn (Lưu ý rằng điều này hoạt động bắt đầu từ đặc tả 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>
Thật không may nếu bạn có một không gian cần thiết, nó cũng có thể cần dải đó, vì vậy bạn có thể cần một không gian không bị phá vỡ ở một số vị trí.
web.xml
: <init-param> <param-name> trimSpaces </param-name> <param-value> true </param-value> </init-param>
Nếu servletcontainer của bạn không hỗ trợ thuộc tính JSP 2.1 trimDirectiveWhitespaces
, thì bạn cần tham khảo JspServlet
tài liệu của nó để biết bất kỳ thông số khởi tạo nào. Trong ví dụ Tomcat , bạn cũng có thể định cấu hình nó bằng cách đặt trimSpaces
init-param thành true
in cho JspServlet
trong Tomcat's /conf/web.xml
:
<init-param>
<param-name>trimSpaces</param-name>
<param-value>true</param-value>
</init-param>
Một sự thay thế hoàn toàn khác là JTidyFilter . Nó không chỉ cắt bỏ khoảng trắng mà còn định dạng HTML theo cách thụt lề chính xác.
TrimDirectiveWhitespaces chỉ được hỗ trợ bởi các thùng chứa servlet hỗ trợ JSP 2.1 trở lên, hoặc trong trường hợp hoặc Tomcat, Tomcat 6 (và một số phiên bản như Tomcat 6.0.10 không triển khai đúng cách - không biết về những phiên bản khác). Có thêm thông tin về trimDirectiveWhitespaces tại đây:
http://www.oracle.com/technetwork/articles/javaee/jsp-21-136414.html
và đây
Không trực tiếp những gì bạn đang yêu cầu, nhưng điều giúp tôi là đặt các thẻ nhận xét HTML một cách thông minh xung quanh các thẻ jsp của tôi và cũng đặt khoảng trắng bên trong thẻ 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>
Bạn có thể tiến thêm một bước nữa và cũng có thể loại bỏ các dòng mới (ký tự xuống dòng) giữa các thẻ html tại thời điểm xây dựng.
VD thay đổi:
<p>Hello</p>
<p>How are you?</p>
thành:
<p>Hello</p><p>How are you?</p>
Làm điều đó, sử dụng maven-replacer-plugin
và thiết lập nó trong 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>
Điều này sẽ chỉ sửa đổi các JSP trong thư mục xây dựng và không chạm vào các JSP trong nguồn của bạn.
Bạn có thể cần điều chỉnh đường dẫn ( <filesToInclude>
) nơi chứa các JSP của bạn.
Vui lòng sử dụng chức năng cắt, ví dụ
fn:trim(string1)
Thêm / chỉnh sửa catalina.properties
tệp tomcat của bạn với
org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false
Xem thêm: https://confluence.sakaiproject.org/display/BOOT/Install+Tomcat+7