参见英文答案 > Can not find the tag library descriptor for “http://java.sun.com/jsp/jstl/core” 13个
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> //line-1
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c1" %> //line-2
第1行和第2行之间有什么区别吗? jsp文件中的第2行没有给出任何错误,但是另一个jsp中的第1行给出了错误
Can not find the tag library descriptor for
“07001”
我已经看到问题here的解决方案,但无法理解
什么是“Facelets”
It is true that Facelets 1.x and 2.x uses different namespaces for the
JSTL tag library. It was less or more a namespace bug in Facelets 1.x
and has been fixed for Facelets 2.x.
- The real JSTL 1.0 taglib uses the URI 07003.
- The real JSTL 1.1/1.2 taglib uses the URI 07001.
- Facelets 1.x uses the URI 07003.
- Facelets 2.x uses the URI 07001.
- Facelets 2.2+ uses the URI 07007.
You can find all Facelets 2.x tags in the Facelets tag library
documentation. Facelets don’t ship with the full tag set as the real
JSTL taglib. Only a few of the<c:xxx>
and the full set of<fn:xxx>
are copied into Facelets. The<fmt:xxx>
,<sql:xxx>
and<xml:xxx>
tags
are not taken over in Facelets.
解决方法:
如果您正在使用(使用JSTL 1.2)
<%@ taglib prefix =“c”uri =“http://java.sun.com/jsp/jstl/core”%>
意味着使用您不需要的EL表达式< c:out>.您可以直接将EL表达式插入到jsp页面,如${propertyName}
使用时(使用JSTL 1.0已弃用)
<%@ taglib prefix =“c”uri =“http://java.sun.com/jsp/core”%>
您不能直接在需要的jsp页面上使用EL Expressions< c:out>.页面上的EL表达式无效.例如< c:out value =“${propertyName}”>.
您的web-app版本(在web.xml中找到)也应该降至2.3以使用http://java.sun.com/jsp/core,这又是太旧了.
结论:
<%@ taglib prefix =“c”uri =“http://java.sun.com/jsp/jstl/core”%> – 可以直接使用EL
<%@ taglib prefix =“c”uri =“http://java.sun.com/jsp/core”%> – 不能直接使用EL