2015-12-31 94 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文件。

相关问题