第1行和第2行之间有什么区别。jsp文件中的第2行没有给出任何错误,但是另一个jsp中的第1行却给出了错误
找不到“ http://java.sun.com/jsp/jstl/core ” 的标记库描述符
我已经看到了问题的解决方案在这里,但没能明白什么是“Facelets的”
的确,Facelets 1.x和2.x对JSTL标签库使用不同的名称空间。在Facelets 1.x中,它或多或少是一个名称空间错误,并且在Facelets 2.x中已得到修复。 真正的JSTL 1.0 taglib使用URI http://java.sun.com/jstl/core。 真正的JSTL 1.1 / 1.2 taglib使用URI http://java.sun.com/jsp/jstl/core。 Facelets 1.x使用URI http://java.sun.com/jstl/core。 Facelets 2.x使用URI http://java.sun.com/jsp/jstl/core。 Facelets 2.2+使用URI http://xmlns.jcp.org/jsp/jstl/core。 您可以在Facelets标记库文档中找到所有Facelets 2.x标记。Facelets并没有将完整标签集设置为真正的JSTL taglib。和中只有一部分<c:xxx>和全部<fn:xxx> 被复制到Facelets中。的<fmt:xxx>,<sql:xxx>并且<xml:xxx>标签不Facelets的接管。
的确,Facelets 1.x和2.x对JSTL标签库使用不同的名称空间。在Facelets 1.x中,它或多或少是一个名称空间错误,并且在Facelets 2.x中已得到修复。
您可以在Facelets标记库文档中找到所有Facelets 2.x标记。Facelets并没有将完整标签集设置为真正的JSTL taglib。和中只有一部分<c:xxx>和全部<fn:xxx> 被复制到Facelets中。的<fmt:xxx>,<sql:xxx>并且<xml:xxx>标签不Facelets的接管。
<c:xxx>
<fn:xxx>
<fmt:xxx>
<sql:xxx>
<xml:xxx>
如果您正在使用(使用JSTL 1.2)
JSTL 1.2
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
表示使用不需要的EL表达式<c:out>。您可以将EL表达式直接插入jsp页面,例如${propertyName}
<c:out>
${propertyName}
使用时(JSTL 1.0不推荐使用)
JSTL 1.0
<%@taglib prefix="c" uri="http://java.sun.com/jsp/core" %>
您不能直接在所需的jsp页面上使用EL表达式<c:out>。页面上的EL表达式不起作用。例如<c:out value=”${propertyName}”>。
<c:out value=”${propertyName}”>
另外,您的网络应用版本(位于中web.xml)应降到2.3才能使用http://java.sun.com/jsp/core,这又太旧了。
web.xml
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