জেএসপি আউটপুট থেকে স্ট্রিপ হোয়াইটস্পেস


110

আমি কীভাবে জেএসপি পৃষ্ঠাগুলির আউটপুট থেকে অতিরিক্ত শ্বেতস্থান সজ্জিত করতে পারি? আমি কি আমার ওয়েব.এক্সএমএল এ ফ্লিপ করতে পারি? টমক্যাট নির্দিষ্ট সেটিং আছে?

উত্তর:


172

একটি ট্রিমওয়াইটস্পেসের নির্দেশিকা রয়েছে যা এটি সম্পাদন করবে,

আপনার জেএসপিতে:

<%@ page trimDirectiveWhitespaces="true" %>

অথবা jsp-config বিভাগে আপনার ওয়েব.এক্সএমএল (নোট করুন যে এটি সার্লেটের স্পেসিফিকেশন 2.5 থেকে শুরু করে works

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

দুর্ভাগ্যক্রমে আপনার যদি প্রয়োজনীয় স্থান থাকে তবে এটির জন্য স্ট্রিপও লাগতে পারে, যাতে আপনার কয়েকটি স্থানে অবিচ্ছেদ্য স্থানের প্রয়োজন হতে পারে।


2
এই দুটি বিকল্পের মধ্যে পারফরম্যান্সের ক্ষেত্রে কোনও পার্থক্য আছে কি?
jlb

ট্রিমডাইরেক্টিভওয়াইটস স্পেসগুলি কেবল সার্লেট পাত্রে সমর্থিত যা জেএসপি ২.১ সমর্থন করে এবং তার পরে, বা ক্ষেত্রে বা টোম্যাট, টমক্যাট ((এবং কিছু সংস্করণ যেমন টমক্যাট .0.০.১০ এটি সঠিকভাবে প্রয়োগ করে না - অন্যদের সম্পর্কে জানেন না), আছে এখানে ট্রিমডাইরেক্টিভসাইটস স্পেসস সম্পর্কে আরও তথ্য: java.sun.com/developer/technicalArticles/J2EE/jsp_21 এবং এখানে raibledesigns.com/rd/entry/trim_spaces_in_your_jsp1
তরঙ্গদ্বীপ

3
এবং জেএসপি কাস্টম .tag ফাইলগুলিতে <% @ ট্যাগ বডি-কন্টেন্ট = "স্ক্রিপ্টলেস" ট্রিমডাইরেক্টিভসাইটস স্পেসস = "সত্য"%> ব্যবহার করুন।
থমাস ডব্লিউ

টমক্যাট 7 web.xml: <init-param> <param-name> ট্রিমস্পেসেস </ p> << পরম- মূল্য> সত্য </ div> <<</init-param>
উজ্জ্বল সিং

আমি টমকেট 8 চালাচ্ছি এবং এটি কাজ করবে বলে মনে হচ্ছে না। এটি কারও জন্য কাজ করছে?
glez

27

যদি আপনার সার্লেটলেট কনটেনার জেএসপি ২.১ trimDirectiveWhitespacesসম্পত্তি সমর্থন করে না , তবে আপনাকে JspServletকোনও প্রারম্ভিক পরামিতিগুলির জন্য এটির ডকুমেন্টেশনগুলির সাথে পরামর্শ করতে হবে । উদাহরণস্বরূপ ইন হুল বিড়াল , আপনি ভাল হিসাবে এটি সেট করে কনফিগার করতে পারেন trimSpacesথেকে Init-PARAM trueজন্য JspServletহুল বিড়াল এর /conf/web.xml:

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

একটি সম্পূর্ণ ভিন্ন বিকল্প হ'ল জেটিডিফিল্টার । এটি কেবল হোয়াইটস্পেসকে ছাঁটাই করে না, তবে এটি সঠিক ইনডেন্টেশনে এইচটিএমএলকেও ফর্ম্যাট করে


ট্রিমস্পেসস আরম্ভ-পরমকে /conf/web.xML এ সত্য হিসাবে সেট করে কনফিগার করেছি তবে উত্পন্ন এইচটিএমএলের স্পেসগুলি ছাঁটা হয় না। আমি টমক্যাট 6.0 ব্যবহার করছি। কোন ধারনা?
রিয়া

7
@ আরিয়া: নোট করুন যে আপনার বুঝতে হবে যে এটি কেবল জেএসটিএল এবং স্ক্রিপ্টলেটের মতো ট্যাগলিবগুলির দ্বারা সাদা স্থানকে ছাঁটাই করে। আপনি যদি এইচটিএমএল থেকে সমস্ত সাদা স্থান ট্রিম করতে চান তবে আলাদা সমাধানের দিকে যান। আপনি এখানে একটি ফিল্টার উদাহরণ খুঁজে পেতে পারেন: balusc.blogspot.com/2007/12/ whitespacefilter.html
BalusC

আমি সবেমাত্র লক্ষ্য করেছি যে আমার সাইটের বি / সি জিনিস থেকে নিবন্ধটি কোডটি সহ কিছু দোষ ছাপতে শুরু করেছে। আমি এইচটিএমএল উত্সটি অনুলিপি করেছি এবং ডাব্লু 3 যাচাইকারীটিতে এটি আটকিয়েছি যে শ্বেত স্পেস ফিল্টারটি মাঝে মাঝে বৈশিষ্ট্যযুক্ত বৈশিষ্ট্যযুক্ত। উদাহরণস্বরূপ এটি ... <div অন্লিক = "সঠিক ()" শ্রেণি = "সঠিক"> এই <div অন্লিক = "ভুল" শ্রেণি = "ভুল"> এ রূপান্তরিত হবে। অথবা এই <a class="cor درست"> এ << অ্যাক্লাস = "ভুল"> এ। তাই শ্বেতক্ষেত্রটি হারাতে উপাদানটির জন্য নিবিড় ট্যাগটি অবৈধ হয়ে যায়। এই সম্পর্কে কোন টিপস?
gmustudent

4

ট্রিমডাইরেক্টিভওয়াইটেস স্পেসগুলি কেবল সার্লেট পাত্রে সমর্থিত যা জেএসপি ২.১ সমর্থন করে এবং তার পরে, বা ক্ষেত্রে বা টোম্যাট, টমক্যাট ((এবং কিছু সংস্করণ যেমন টমক্যাট .0.০.১০ এটি সঠিকভাবে প্রয়োগ করে না - অন্যদের সম্পর্কে জানেন না)। এখানে ট্রিমডাইরেক্টিভওয়াইটস স্পেসগুলি সম্পর্কে আরও তথ্য রয়েছে:

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

এবং এখানে

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


3

আপনি যা চাইছেন তা সরাসরি নয়, তবে কী আমাকে সহায়তা করে তা এইচটিএমএল মন্তব্য ট্যাগগুলিকে আমার জেএসপি ট্যাগের চারপাশে একটি চৌকস উপায়ে রাখছে, এবং সার্ভলেট ট্যাগের (<%%>) ভিতরে সাদা স্থান রেখে দিয়েছে:

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

এবং আপনার জেএসপিতে:

<%@ page trimDirectiveWhitespaces="true" %>

1

আপনি আরও এক ধাপ এগিয়ে যেতে পারেন এবং নির্মানের সময় এইচটিএমএল ট্যাগগুলির মধ্যে থাকা নতুন লাইনগুলি (ক্যারেজ রিটার্ন )ও সরাতে পারেন।

উদাহরণস্বরূপ:

<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>

এটি কেবল বিল্ড ডিরেক্টরিতে জেএসপিগুলিকে সংশোধন করবে এবং আপনার উত্সগুলিতে জেএসপিগুলিকে স্পর্শ করবে না।

<filesToInclude>আপনার জেএসপিগুলি যেখানে অবস্থিত সে পথে আপনাকে অভিযোজিত করতে হতে পারে ।




0

আসল প্রশ্ন থেকে কিছুটা দূরে, আপনি যদি আউটপুট দেওয়ার আগে যা কিছু করেছিলেন তার দ্বারা খালি লাইনগুলি থেকে মুক্তি পেতে চান, আপনি ব্যবহার করতে পারেন

out.clearBuffer();
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.