2011-08-10 14 views
10

अपने स्वयं के जेएसपी टैग द्वारा उत्पन्न आउटपुट को कम करने के लिए संभव है? उदाहरण के लिए नीचे परिभाषित टैग 1 के बजाय 5 लाइनें उत्पन्न करता है। इससे बचने के लिए संभव है (टैग स्रोत में सभी 5 लाइनों को 1 में शामिल किए बिना)?कस्टम जेएसपी टैग द्वारा उत्पन्न आउटपुट को कैसे छोटा करें?

<%@ tag description="link" pageEncoding="UTF-8"%> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<%@ attribute name="href" required="true" type="java.lang.String" %> 
<%@ attribute name="label" required="false" type="java.lang.String" %> 
<a href="<c:url value="${href}"/>">${not empty label ? label : href}</a> 

नहीं एक समाधान:

<%@ tag description="standard input" pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><%@ attribute name="href" required="true" type="java.lang.String" description="address relative to web-app context" %><%@ attribute name="label" required="false" type="java.lang.String" description="link label" %><a href="<c:url value="${href}"/>">${not empty label ? label : href}</a> 
+0

यह अन्य प्रश्न की एक सटीक शिकार नहीं है बस टैग के भीतर सभी सफेद जगह को हटा रहा है? आप एक टैग के भीतर <% @ पृष्ठ trimDirectiveWhitespaces = "true"%> का उपयोग नहीं कर सकते हैं। – werkshy

+2

सही उत्तर यह है कि कोई इसे टैग में जोड़ सकता है: '<% @ टैग trimDirectiveWhitespaces =" true "%>' – werkshy

+0

फिर से खोला जाना चाहिए क्योंकि सही उत्तर (टिप्पणियां देखें) मूल प्रश्न से अलग है। –

उत्तर

7

हाँ, आप विश्व स्तर पर खाली स्थान के जो स्क्रिप्ट भाव और टैग द्वारा छोड़ दिया जाता है ट्रिम करने के लिए JSP पार्सर कॉन्फ़िगर कर सकते हैं।

अपने वेब ऐप्लिकेशन की web.xml को यह जोड़े (जो सर्वलेट 2.5 संगत हो गया है!): यदि आप एक सर्वलेट 2.4 कंटेनर या कम लक्षित करते हैं तो

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

, तो आप के बजाय इस लागू करने के लिए कंटेनर के अपने web.xml संपादित करने की विश्व स्तर पर। उदाहरण के लिए टोमकैट में, यह /conf/web.xml फ़ाइल है। <servlet>JspServlet की घोषणा के लिए खोजें और <servlet> घोषणा के अंदर निम्न सर्वलेट इनिट पैरामीटर जोड़ें।

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

आपको बोल्ड होना चाहिए ** सर्वलेट 2.5 संगत ** – Vlad

+1

@Vlad: ठीक है, 5 साल पहले मैं करूँगा। लेकिन आजकल, सर्वलेट 2.5 पहले से ही 5 साल से बाहर है ... मैं उम्मीद करता हूं कि हर कोई पहले से ही इसका इस्तेमाल कर रहा है;) यह विस्मयादिबोधक चिह्न पर्याप्त है जो मुझे लगता है। – BalusC

+2

'' केवल .jsp पृष्ठों के लिए काम करता है (जैसा कि <<% @ पृष्ठ trimDirectiveWhitespaces = "true"%> ') जैसा है, लेकिन मेरे स्वयं के टैग जेनरेट आउटपुट के लिए काम नहीं करता है। केवल 'ट्रिम स्पेस' के रूप में init param काम करता है और मेरे टैग के 1-लाइन आउटपुट प्राप्त करता है। – marioosh

3

अपने JSP में:

<%@ page trimDirectiveWhitespaces="true" %> 
+0

मैं टॉमकैट 7.0.1 9 (सर्वलेट 3.0, जेएसपी 2.2) और '<% @ पृष्ठ trimDirectiveWhitespaces =" true "%>' jsp पेज पर काम करता हूं, लेकिन टैग स्रोत पर नहीं (मेरे उदाहरण में 'link.tag') । उस पृष्ठ पर उस निर्देश का उपयोग करना जहां मेरा स्वयं का टैग उपयोग किया जाता है, टैग के आउटपुट को कम नहीं करता है। – marioosh

+0

@ मारियोशोश ठीक है, तो शायद आपको अपने टैग के आउटपुट को ट्रिम करना चाहिए (0) –

+0

मेरे प्रश्न में टैग के साथ ऐसा कैसे करें? – marioosh

15

जैसा कि पहले ही werkshy से कहा, खाली स्थान के किया जा रहा है एक JSP कस्टम टैग में प्रयोग किया जाता निर्देशों द्वारा उत्पन्न से बचने के लिए,

<%@ tag trimDirectiveWhitespaces="true" %> 

इस्तेमाल किया जा सकता (<% @ पृष्ठ trimDirectiveWhitespaces = "true"%> इस मामले में मदद नहीं करता है, क्योंकि यह केवल जेएसपी में निर्देशों पर लागू होता है और पृष्ठ द्वारा उपयोग किए जाने वाले कस्टम टैग में नहीं)।

हालांकि, इस टैग विशेषता को अनुमति देने के लिए, जेएसपी संस्करण 2.1 को निर्दिष्ट करने की आवश्यकता हो सकती है उदा। एक implicit.tld का उपयोग करना (जैसा कि https://docs.oracle.com/javaee/5/tutorial/doc/bnamu.html या https://forums.oracle.com/thread/742224 पर वर्णित है) जिसे तब टैग के साथ निर्देशिका में रखा जाना चाहिए। (कम से कम मुझे क्या करना है कि WebLogic 12C के लिए की जरूरत है।)

implicit.tld: कैसे एक के बिना एक कस्टम टैग द्वारा खाली स्थान के उत्पादन ट्रिम करता है:

<?xml version="1.0" encoding="UTF-8"?> 
<taglib version="2.1" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"> 
    <tlib-version>1.0</tlib-version> 
    <short-name>implicit</short-name> 
</taglib> 
संबंधित मुद्दे