Jsp आउटपुट से स्ट्रिप व्हाट्सएप


110

मैं jsp पृष्ठों के आउटपुट से अतिरिक्त व्हाट्सएप कैसे निकाल सकता हूं? क्या कोई स्विच है जो मैं अपने web.xml पर फ्लिप कर सकता हूं? क्या कोई टॉमकट विशिष्ट सेटिंग है?

जवाबों:


172

वहाँ एक trimWhiteSpaces निर्देश है कि यह पूरा करना चाहिए,

आपके JSP में:

<%@ page trimDirectiveWhitespaces="true" %>

या jsp-config सेक्शन में अपने web.xml (ध्यान दें कि यह सर्वलेट स्पेसिफिकेशन 2.5 से शुरू होकर काम करता है।)।

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

दुर्भाग्य से यदि आपके पास एक आवश्यक स्थान है तो उसे पट्टी की भी आवश्यकता हो सकती है, इसलिए आपको कुछ स्थानों पर गैर-ब्रेकिंग स्थान की आवश्यकता हो सकती है।


2
क्या इन दो विकल्पों के बीच प्रदर्शन के मामले में अंतर है?
jlb

TrimDirectiveWhitespaces केवल सर्वेंट कंटेनरों द्वारा समर्थित है जो JSP 2.1 का समर्थन करता है और उसके बाद, या मामले में या Tomcat, Tomcat 6 (और कुछ संस्करणों जैसे Tomcat 6.0.10 इसे ठीक से लागू नहीं करते - दूसरों के बारे में नहीं जानते), वहाँ है trimDirectiveWhitespaces के बारे में अधिक जानकारी यहाँ: java.sun.com/developer/technicalArticles/J2EE/jsp_21 और यहाँ raibledesigns.com/rd/entry/trim_spot_in_your_jsp1
wavetree

3
और JSP कस्टम .tag फाइलों में, <% @ टैग बॉडी-कंटेंट = "स्क्रिप्टलेस" ट्रिमडायरेक्टिव व्हाईट्सस्पेस = "ट्रू"%> का उपयोग करें।
थॉमस डब्ल्यू

टॉम्कट 7 web.xml: <init-param> <param-name> trimSpaces </ param-name> <param-value> true </ param-value> </ init-param>
उज्जवल

मैं टॉमकैट 8 चला रहा हूं और यह काम नहीं करता है। क्या यह किसी के लिए काम कर रहा है?
ग्लीज

27

यदि आपका सर्वलेटकॉर्प जेएसपी 2.1 trimDirectiveWhitespacesसंपत्ति का समर्थन नहीं करता है , तो आपको JspServletकिसी भी प्रारंभिक मापदंडों के लिए इसके प्रलेखन से परामर्श करने की आवश्यकता है । उदाहरण के लिए बिलाव , तो उसी तरह इसे निर्धारित करके कॉन्फ़िगर कर सकते हैं trimSpacesकरने के लिए init-परम trueके लिए में JspServletबिलाव के दशक में /conf/web.xml:

<init-param>
    <param-name>trimSpaces</param-name>
    <param-value>true</param-value>
</init-param>

एक पूरी तरह से अलग विकल्प JTidyFilter है । यह न केवल व्हाट्सएप को ट्रिम करता है, बल्कि यह एक सही इंडेंटेशन में HTML को प्रारूपित करता है


मैंने /conf/web.xml में ट्रिमस्पेस को init-param पर सेट करके कॉन्फ़िगर किया है, लेकिन जनरेट किए गए HTML में रिक्त स्थान ट्रिम नहीं किए गए हैं। मैं Tomcat 6.0 का उपयोग कर रहा हूं। कोई विचार?
रिया

7
@रिया: ध्यान दें कि आपको यह समझने की आवश्यकता है कि यह केवल जीएसटीएल और स्क्रिप्टलेट जैसे टैगलिब द्वारा छोड़े गए व्हाट्सएप को ट्रिम करता है। यदि आप HTML से सभी व्हाट्सएप ट्रिम करना चाहते हैं, तो एक अलग समाधान के लिए सिर। आप यहां एक फ़िल्टर उदाहरण पा सकते हैं: balusc.blogspot.com/2007/12/whitespacefilter.html
BalusC

मैंने अभी देखा है कि मेरी साइट पर आर्टिकल b / c चीजों के कोड के साथ एक जोड़े को झपकी लेना गलत दिखाई देने लगा। मैंने html स्रोत की प्रतिलिपि बनाई और इसे w3 सत्यापनकर्ता में यह पता लगाने के लिए चिपकाया कि व्हॉट्सएप फ़िल्टर कभी-कभी सुरीली विशेषता है। उदाहरण के लिए ... <div onclick = "सही ()" वर्ग = "सही"> इस <div onclick = "गलत" वर्ग = "गलत"> में बदल जाएगा। या इस <a class="correct"> इस <aclass = "wrong"> में। इसलिए व्हाट्सएप को खोने से तत्व के लिए करीबी टैग अमान्य हो जाता है। इस पर कोई सुझाव?
gmustudent

4

TrimDirectiveWhitespaces केवल सर्वेंट कंटेनरों द्वारा समर्थित है जो JSP 2.1 और उसके बाद, या मामले में या Tomcat, Tomcat 6 (और कुछ संस्करणों जैसे Tomcat 6.0.10 इसे ठीक से लागू नहीं करते - दूसरों के बारे में नहीं जानते) का समर्थन करते हैं। यहाँ trimDirectiveWhitespaces के बारे में अधिक जानकारी है:

http://www.oracle.com/technetwork/articles/javaee/jsp-21-136414.html

और यहाँ

http://raibledesigns.com/rd/entry/trim_spaces_in_your_jsp1


3

सीधे नहीं कि आप क्या पूछ रहे हैं, लेकिन मुझे अपने jsp टैग के आसपास एक चतुर तरीके से HTML टिप्पणी टैग लगाने में क्या मदद मिलती है, और एक सर्वलेट टैग के अंदर व्हाट्सएप भी डाल रहा है (<%%>):

${"<!--"}
<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>

3

यदि आप टैग का उपयोग कर रहे हैं, तो आप वहां भी आवेदन कर सकते हैं:

<%@ tag description="My Tag" trimDirectiveWhitespaces="true" %>

और आपके jsp पर:

<%@ page trimDirectiveWhitespaces="true" %>

1

आप बिल्ड समय पर 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>&gt;\s*&lt;</token>
                <value>&gt;&lt;</value>
                <regexFlags>
                    <regexFlag>MULTILINE</regexFlag>
                </regexFlags>
            </configuration>
        </execution>
    </executions>
</plugin>

यह बिल्ड-डायरेक्टरी में केवल JSPs को संशोधित करेगा, और आपके स्रोतों में JSP को स्पर्श नहीं करेगा।

आपको उस पथ को अनुकूलित करने की आवश्यकता हो सकती है ( <filesToInclude>) जहां आपके JSPs स्थित हैं।




0

वास्तविक प्रश्न से थोड़ा हटकर, यदि आप आउटपुट से पहले जो कुछ भी करते हैं, उसके कारण खाली लाइनों से छुटकारा पाना चाहते हैं, तो आप इसका उपयोग कर सकते हैं

out.clearBuffer();
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.