الشريط الأبيض من الإخراج JSP
-
03-07-2019 - |
سؤال
كيف يمكنني تجريد مساحة بيضاء إضافية من إخراج صفحات JSP؟ هل هناك مفتاح يمكنني أن أقلبه على web.xml الخاص بي؟ هل يوجد إعداد محدد Tomcat؟
المحلول
هناك توجيهات trimwhitespaces يجب أن تحقق هذا ،
في JSP الخاص بك:
<%@ page trimDirectiveWhitespaces="true" %>
أو في قسم JSP-Config الخاص بك web.xml (لاحظ أن هذا يعمل من مواصفات 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>
لسوء الحظ ، إذا كان لديك مساحة مطلوبة ، فقد تحتاج أيضًا إلى قطاع ذلك ، لذلك قد تحتاج إلى مساحة غير متجانسة في بعض المواقع.
نصائح أخرى
إذا كان ServletContainer لا يدعم JSP 2.1 trimDirectiveWhitespaces
الخاصية ، ثم تحتاج إلى استشارةها JspServlet
وثائق لأي معلمات التهيئة. على سبيل المثال هر, ، يمكنك تكوينه أيضًا عن طريق الإعداد trimSpaces
init-param ل true
في JspServlet
في تومكات /conf/web.xml
:
<init-param>
<param-name>trimSpaces</param-name>
<param-value>true</param-value>
</init-param>
بديل مختلف تمامًا هو jtidyfilter. لا يقطر المسافة البيضاء فحسب ، بل إنه أيضًا تنسيقات HTML في المسافة البادئة الصحيح.
يتم دعم مساحات trimdirectivewhitespaces فقط بواسطة حاويات servlet التي تدعم JSP 2.1 وبعد ، أو في الحالة أو tomcat ، tomcat 6 (وبعض الإصدارات على سبيل المثال لا تومكات 6.0.10 لا تنفذها بشكل صحيح - لا تعرف الآخرين). هناك المزيد من المعلومات حول مساحات trimdirective whitespresh هنا:
http://www.oracle.com/technetwork/articles/javaee/jsp-21-136414.html
و هنا
إذا كنت تستخدم العلامات ، يمكنك التقديم هناك أيضًا:
<%@ tag description="My Tag" trimDirectiveWhitespaces="true" %>
وعلى JSP الخاص بك:
<%@ page trimDirectiveWhitespaces="true" %>
ليس ما تطلبه مباشرة ، ولكن ما يساعدني هو وضع علامات تعليق HTML بطريقة ذكية حول علامات JSP الخاصة بي ، وكذلك وضع المسافة البيضاء داخل علامة 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>
إضافة/تحرير tomcat الخاص بك catalina.properties
ملف مع
org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false
أنظر أيضا: https://confluence.sakaiproject.org/display/boot/install+tomcat+7
يمكنك الذهاب خطوة واحدة إلى الأمام وأيضًا إزالة الخطوط الجديدة (إرجاع النقل) بين علامات HTML في وقت الإنشاء.
مثل التغيير:
<p>Hello</p>
<p>How are you?</p>
داخل:
<p>Hello</p><p>How are you?</p>
افعل ذلك ، استخدم maven-replacer-plugin
وإعداده في 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>
سيؤدي ذلك إلى تعديل JSPs فقط في الدليل ، ولا تلمس JSPs في مصادرك.
قد تحتاج إلى تكييف المسار (<filesToInclude>
) حيث يوجد JSPs في.
من فضلك ، استخدم funcion trim ، مثال
fn:trim(string1)