2015-02-03 12 views
9

में कस्टम टैगलिब जोड़ते हैं तो मुझे जेएसपी पेज के लिए कुछ कस्टम फ़ंक्शन लागू करने की आवश्यकता होती है और इसके लिए मुझे कस्टम टैगलिब बनाना होगा। यह सरल कार्रवाई होनी चाहिए, लेकिन मुझे पहले चरण पर एक समस्या मिली जब मैं खाली टैगलिब जोड़ता हूं।NullPointerException जब जेएसपी

java.lang.NullPointerException 
    at org.apache.tomcat.util.descriptor.tld.TldResourcePath.hashCode(TldResourcePath.java:156) 
    at java.util.HashMap.hash(HashMap.java:338) 
    at java.util.HashMap.get(HashMap.java:556) 
    at org.apache.jasper.compiler.TldCache.getTaglibXml(TldCache.java:95) 
    at org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:179) 
    at org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:411) 
    at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:469) 
    at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1428) 
    at org.apache.jasper.compiler.Parser.parse(Parser.java:139) 
    at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:227) 
    at org.apache.jasper.compiler.ParserController.parse(ParserController.java:100) 
    at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:199) 
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:356) 
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:336) 
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:323) 
    ... 

मेरे कस्टम TLD (webapp/custom.tld में रखा):

<?xml version="1.0"> 
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" 
     version="2.0"> 

    <tlib-version>1.0</tlib-version> 
    <short-name>MyLibrary</short-name> 
    <uri>myTagLib</uri> 

</taglib> 

JSP:

<%@ taglib prefix="myTag" uri="myTagLib" %> 

इसके अलावा, मैं में कुछ समारोह जोड़ने की कोशिश की मैं एक अपवाद मिला custom.tld, लेकिन बिना किसी बदलाव के।

क्या कोई मेरी मदद कर सकता है? मैं क्या गलत कर रहा हूं?

+0

RldResourcePath वस्तु में एक लापता यूआरएल वस्तु को TldResourcePath.156 अंक में NullPointerException के रूप में मेरे web.xml में

<%@ taglib uri="myTagLib" prefix="tt" %> 

और परिभाषित taglib करने के लिए इसे बदल दिया है। आपकी यूआरआई परिभाषा में कोई समस्या हो सकती है। – Luke

उत्तर

10

आप कंटेनर खोजने के लिए और /<taglib>/<uri> पर दिया गया मान से मैप करने के लिए अपने custom.tld फ़ाइल कहीं /WEB-INF निर्देशिका के अंदर ले जाने के लिए की जरूरत है।

यदि किसी कारण से आप नहीं कर सकते हैं, तो आपको <taglib> मैपिंग वेब.xml फ़ाइल में जोड़ना चाहिए।

<jsp-config> 
    <taglib> 
    <taglib-uri>myTagLib<taglib-uri> 
    <taglib-location>/webportal/custom.tld<taglib-location> 
    </taglib> 
</jsp-config> 

<taglib-location> अपने वेब एप्लिकेशन को जड़ के सापेक्ष निर्दिष्ट किया जाता है। यदि आवश्यक हो, संशोधित करें।

+0

मुझे अपने प्रश्न में थोड़ी गलती मिली, मेरा tld webapp/custom.tld (वेबपोर्टल के बजाय) में रखा गया। लेकिन वैसे भी, जब मैंने इसे वेब-आईएनएफ में बदल दिया और यूरी बदल दी, तो उसने काम शुरू किया! मुझे यकीन है कि मैंने इसे पहले कोशिश की, लेकिन मुझे लगता है कि मैंने कुछ महत्वपूर्ण बात नहीं की है (हो सकता है कि मैंने यूरी नहीं बदला हो ...)। तो, आपकी मदद के लिए धन्यवाद! – Vartlok

+0

यह जानकर अच्छा लगा कि आपको यह काम मिल गया है। –

+0

धन्यवाद, यह काम करता है। क्या कोई प्रासंगिक दस्तावेज है? –

7

मैंने इसे ठीक करने में 4 घंटे बिताए हैं। मैंने टॉमकैट 6 से टॉमकैट 8 तक स्विच किया है और उसी एनपीई को शुरू करना शुरू कर दिया है। मैं खोजने कि समस्या मेरी taglib

<%@ taglib uri="/includes/tt.tld" prefix="tt" %> 

पता चला कि बिलाव 8 जैस्पर रिश्तेदार पथ के साथ आयात पर विफल रहता है आयात करने में किया गया था समाप्त हो गया। मैं

<jsp-config> 
    <taglib> 
     <taglib-uri>myTagLib</taglib-uri> 
     <taglib-location>/includes/tt.tld</taglib-location> 
    </taglib> 
</jsp-config> 
+1

के लिए प्रवेश नाम की उम्मीद है <% @ taglib uri = "बदलना/tt.tld" prefix = "tt"%>< सापेक्ष पथों के बारे में आपने जो कहा, उसके आधार पर% @ taglib uri = "/ include/tt.tld" उपसर्ग = "tt"%> इसे मेरे लिए हल किया गया है। – michelpm