2015-12-31 42 views
1

我嘗試使用下面的標記庫在我的JSP頁面:的Java EE 7:無法找到標籤庫描述爲「http://java.sun.com/jsp/jstl/core」

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

但是Eclipse顯示我這個錯誤:

Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core" 

我使用的這個相關性已經有我的classpath JSTL:

<dependency> 
    <artifactId>javaee-api</artifactId> 
    <version>7.0</version> 
    <scope>provided</scope> 
</dependency> 

我用WildFly 9

我有這2個其他標記庫同樣的問題:

<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%> 
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%> 

備註:下面的鏈接是給404 HTTP錯誤:http://central.maven.org/maven2/javax/servlet/jsp/jstl/jstl/1.2/jstl-1.2.jar

謝謝。

+0

使用'http:// central.maven.org/maven2/javax/servlet/jstl/1.2/jstl-1.2.jar'下載'jstl' jar。 – Srinu

+0

在JavaEE 7中,命名空間已更改爲「http:// xmlns.jcp.org/jsp/jstl/core」 – thatsIch

回答

3

如果您的Web應用程序直接使用JSTL,對於JSTL 1.0,命名空間爲http://java.sun.com/jstl/core。 在JavaEE 5中,包含JSTL 1.1,命名空間爲http://java.sun.com/jsp/jstl/core。 在JaveEE 6和JavaEE 7中,包含JSTL 1.2,命名空間爲http://java.sun.com/jsp/jstl/core

但是,如果您的Web應用程序使用JSF + Facelets,對於JaveEE 5中的JSF 1.x + Facelets 1.x,命名空間爲http://java.sun.com/jstl/core。 對於JavaEE 6中的JSF 2.0 + Facelets 2.x,命名空間爲http://java.sun.com/jsp/jstl/core。 對於JavaEE 7中的JSF 2.2 + Facelets 2.2,命名空間爲http://xmlns.jcp.org/jsp/jstl/core

0

了Java EE 7教程簡要陳述了JSTL新的URI在What Is Facelets部分爲:

不過,我還沒有找到的實現使用URI的taglibs。

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

而且擺脫錯誤的,你需要加載依賴的JSTL的實施provided範圍例如:那麼作爲的URI(包含推薦的命名空間)應該被定義

<dependency> 
    <groupId>jstl</groupId> 
    <artifactId>jstl</artifactId> 
    <version>1.2</version> 
    <scope>provided</scope> 
</dependency> 

provided範圍防止它被納入因爲應當使用正在使用的應用程序服務器的一個WAR文件。

相關問題