2011-02-28 11 views
30

मैं मोज़रा, प्राइमफेस और टॉमकैट 6.x का उपयोग कर जेएसएफ 2.0 प्रोजेक्ट पर काम कर रहा हूं।जेएसटीएल को मेवेन में कैसे जोड़ा जाए?

मुझे सी का उपयोग करने की आवश्यकता है: कुछ प्राइमफेस घटक के लिए प्रत्येक के लिए गतिशील संख्या जैसे पी: टैब लेकिन मुझे सी: forEach के साथ समस्या है। जेएसटीएल का अन्य सभी टैग अच्छा काम करता है।

मैं निम्नलिखित त्रुटि है:

java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/LoopTagStatus

मैं निम्नलिखित xmlns:c="http://java.sun.com/jsp/jstl/core" उपयोग करते हैं, मैं xmlns:c="http://java.sun.com/jstl/core" लेकिन दूसरे के साथ कुछ भी नहीं प्रदर्शन के साथ बदलने के लिए कोशिश की।

<dependency> 
    <groupId>javax.faces</groupId> 
    <artifactId>jsf-api</artifactId> 
    <version>2.0.2-FCS</version> 
    <scope>provided</scope> 
</dependency> 

<dependency> 
    <groupId>com.sun.faces</groupId> 
    <artifactId>jsf-impl</artifactId> 
    <version>2.0.4-b03</version> 
    <scope>provided</scope> 
</dependency> 

<dependency> 
    <groupId>org.primefaces</groupId> 
    <artifactId>primefaces</artifactId> 
    <version>2.2.1</version> 
</dependency> 

<dependency> 
    <groupId>javax.el</groupId> 
    <artifactId>el-api</artifactId> 
    <version>2.2</version> 
</dependency> 

<dependency> 
    <groupId>org.glassfish.web</groupId> 
    <artifactId>el-impl</artifactId> 
    <version>2.2</version> 
</dependency> 

कैसे मैं इसे ठीक कर सकते हैं:

इस lib का सही संस्करण है?

यदि आवश्यक हो तो मैं अधिक विशिष्ट जानकारी दे सकता हूं।

संपादित करें: मैं जोड़ लिया है और कोशिश की अलग-अलग दायरों (क्रम और संकलन), लेकिन कुछ भी नहीं है परिवर्तन:

<dependency> 
    <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
</dependency> 

भंडार की सूची:

<repositories> 
    <repository> 
     <id>central</id> 
     <name>Maven Repository Switchboard</name> 
     <layout>default</layout> 
     <url>http://repo1.maven.org/maven2</url> 
     <snapshots> 
     <enabled>false</enabled> 
     </snapshots> 
    </repository> 
    <repository> 
     <id>maven-repository.dev.java.net</id> 
     <name>Java.net Repository for Maven 1</name> 
     <url>http://download.java.net/maven/1/</url> 
     <layout>default</layout> 
    </repository> 
    <repository> 
     <id>maven2</id> 
     <name>Java.net Repository for Maven</name> 
     <url>http://download.java.net/maven/2</url> 
     <layout>default</layout> 
    </repository> 
    <repository> 
     <id>prime-repo</id> 
     <name>Prime Technology Maven Repository</name> 
     <url>http://repository.prime.com.tr</url> 
     <layout>default</layout> 
    </repository> 
    <repository> 
     <id>JBoss2</id> 
     <url>https://repository.jboss.org/nexus/content/repositories/public</url> 
    </repository> 
    <repository> 
     <id>JBoss</id> 
     <url>http://repository.jboss.com/maven2</url> 
    </repository> 
    <repository> 
     <id>EclipseLink Repo</id> 
     <url>http://www.eclipse.org/downloads/download.php?r=1&amp;nf=1&amp;file=/rt/eclipselink/maven.repo</url> 
     <snapshots> 
     <enabled>true</enabled> 
     </snapshots> 
    </repository> 
    <repository> 
     <id>itextpdf.com</id> 
     <name>Maven Repository for iText</name> 
     <url>http://maven.itextpdf.com/</url> 
    </repository> 

    <repository> 
     <id>guiceyfruit.release</id> 
     <name>GuiceyFruit Release Repository</name> 
     <url>http://guiceyfruit.googlecode.com/svn/repo/releases/</url> 
     <snapshots> 
     <enabled>false</enabled> 
     </snapshots> 
     <releases> 
     <enabled>true</enabled> 
     </releases> 
    </repository> 
    </repositories> 

यह $ TOMCAT_HOME की सामग्री है/lib

annotations-api.jar catalina-ha.jar catalina-tribes.jar el-impl-2.2.jar jasper.jar jsf-api.jar
jsp-api.jar servlet-api.jar
tomcat-dbcp.jar
tomcat-i18n-fr.jar catalina-ant.jar
catalina.jar el-api-2.2.jar
jasper-el.jar jasper-jdt.jar
jsf-impl-2.0.4-b03.jar ojdbc6.jar
tomcat-coyote.jar tomcat-i18n-es.jar tomcat-i18n-ja.jar

+5

टोमकैट बॉक्स के बाहर जेएसटीएल के साथ नहीं भेजता है। जेएसटीएल जोड़ने के लिए आपको अपने मेवेन चीज को निर्देशित करने की आवश्यकता है। मैंने सही लोगों को आकर्षित करने के लिए शीर्षक और टैगिंग में सुधार किया। – BalusC

उत्तर

54

आपको अपने वितरण में जेएसटीएल लाइब्रेरी शामिल करनी होगी। यह कंटेनर द्वारा प्रदान किया जा सकता है, हालांकि यह अभ्यास की सिफारिश नहीं है। (लेखन के रूप में) वर्तमान संस्करण के लिए Maven निर्भरता यहाँ है:

<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>jstl</artifactId> 
    <version>1.2</version> 
</dependency> 

हालांकि, यह हमेशा अद्यतन के लिए maven central repository जाँच के लायक है। अपने jsp पेज में इस प्रकार

+0

यह धागा पुराना हो सकता है, लेकिन जहां बिल्ली pom.xml है? –

+2

@ हाइकलनाशुहा आमतौर पर आपके मेवेन प्रोजेक्ट की जड़ पर। –

+0

इससे कुछ मदद मिल सकती है, इससे मेरी मदद मिली: [मेवेन सेटअप] (http://www.murraywilliams.com/2011/11/running-jstl-1-2-on-tomcat-7-using-maven/comment-page -1/# टिप्पणी -7101 9) – jsky

17

जैसा बलस ने कहा, आपको बस अपने pom.xml में जेएसटीएल जोड़ना होगा क्योंकि टॉमकैट इसमें शामिल नहीं है। 1.2 सबसे हालिया संस्करण है:

<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>jstl</artifactId> 
    <version>1.2</version> 
</dependency> 
+0

यह काम नहीं करता है, मेरे पोम में कुछ याद आ रही है या कुछ संघर्ष हैं? –

+0

tomcat lib निर्देशिका में jstl.jar को शामिल करने और प्रदान किए गए दायरे का उपयोग करने की आवश्यकता है। –

+0

@LaChamelle आप किस सर्वर का उपयोग कर रहे हैं? क्या आपने स्टैंडअल टैगलिब्स भी शामिल किया है? –

5
<!-- standard.jar --> 
<dependency> 
    <groupId>taglibs</groupId> 
    <artifactId>standard</artifactId> 
    <version>1.1.2</version> 
</dependency> 

<!-- JSTL --> 
<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>jstl</artifactId> 
    <version>1.1.2</version> 
</dependency> 

और फिर आप जावा Standart टैग और कार्य का उपयोग कर सकते हैं:

<%@ taglib prefix="c" 
     uri="http://java.sun.com/jsp/jstl/core" %> 

<%@ taglib prefix="fn" 
     uri="http://java.sun.com/jsp/jstl/functions" %> 

यह भी अकेले काम करता है:

<dependency> 
    <groupId>jstl</groupId> 
    <artifactId>jstl</artifactId> 
    <version>1.2</version> 
</dependency> 
1

मैं जानता हूँ कि सवाल पुराना है , लेकिन यह Google परिणामों में उच्च है, इसलिए मैं इसे जोड़ रहा हूं।

न्यूर जेएसटीएल संस्करण उपलब्ध है (केवल) org.glassfish.web groupId के तहत। उदाहरण:

<dependency> 
    <groupId>org.glassfish.web</groupId> 
    <artifactId>javax.servlet.jsp.jstl</artifactId> 
    <version>1.2.4</version> 
</dependency> 
+0

ये मैवेन रिपोजिटरी में क्यों उपलब्ध नहीं हैं? https://mvnrepository.com/ –

+0

वे वास्तव में हैं: https://mvnrepository.com/artifact/org.glassfish.web/javax.servlet.jsp.jstl –

संबंधित मुद्दे