我有一个基于JSF 1.2的webapp,我从中复制了JSTL导入
xmlns:c="http://java.sun.com/jstl/core"
您还可以在Internet上的许多位置找到此导入。我不记得以上是否在我之前的网络项目中工作,无论如何,它不在我当前基于JSF 2.0的webapp中工作。我收到集装箱的警告说:
警告:此页面调用以前缀c声明的XML名称空间http://java.sun.com/jstl/core,但该名称空间不存在taglibrary。
然后我将导入更改为
xmlns:c="http://java.sun.com/jsp/jstl/core"
...在基于JSF / RichFaces的webapp中使用<c:forEach>
删除了所有令人头疼的问题。
这里的诀窍是什么?从JSF 1.2到2.x的JSTL导入URL是否有任何更改?或者前一行通常是错误的(在JSF中)?这两者有什么区别?
答案 0 :(得分:41)
查看我们的JSTL维基页面:https://stackoverflow.com/tags/jstl/info每当您将jstl标记悬停在问题下方时,您都可以获得此类页面,直到弹出一个黑框,然后点击 info link。
Facelets 1.x和2.x确实为JSTL标记库使用了不同的名称空间。 Facelets 1.x中的名称空间bug更少或更多,并且已为Facelets 2.x修复。
http://java.sun.com/jstl/core
。 http://java.sun.com/jsp/jstl/core
。 http://java.sun.com/jstl/core
。 http://java.sun.com/jsp/jstl/core
。 http://xmlns.jcp.org/jsp/jstl/core
。您可以在Facelets tag library documentation中找到所有Facelets 2.x标记。 Facelets不会将完整标记设置为real JSTL taglib。只有少数<c:xxx>
和全套<fn:xxx>
被复制到Facelets中。 Facelets中不会接管<fmt:xxx>
,<sql:xxx>
和<xml:xxx>
标记。
答案 1 :(得分:3)