我有一个基于JSF 1.2的webapp,从中复制了JSTL导入

xmlns:c="http://java.sun.com/jstl/core"

您也可以在Internet上的许多地方找到此导入。我不记得上面的内容在我以前的Web项目中是否起作用,无论如何,在我当前的基于JSF 2.0的Webapp中它都不起作用。我从容器收到警告说:



然后,我将导入更改为
xmlns:c="http://java.sun.com/jsp/jstl/core"

...这在基于JSF / RichFaces的Web应用程序中使用<c:forEach>消除了所有头痛。

这有什么窍门?从JSF 1.2到2.x的JSTL导入URL进行了任何更改吗?还是前一行通常是错误的(在JSF中)?两者有什么区别?

最佳答案

检查我们的JSTL Wiki页面:https://stackoverflow.com/tags/jstl/info只要将鼠标悬停在问题下方的jstl标签上,直到 pop 黑框,然后单击信息链接,您都可以获取此类页面。

的确,Facelets 1.x和2.x为JSTL标签库使用不同的 namespace 。在Facelets 1.x中,它或多或少是一个命名空间bug,并已在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 tag library documentation中找到所有Facelets 2.x标签。 Facelets并未将完整标签设置为real JSTL taglib。只有少数<c:xxx>和整个<fn:xxx>被复制到Facelets中。 facet中不会接管<fmt:xxx><sql:xxx><xml:xxx>标签。

    关于jsf - JSF 1.2和JSF 2.x之间的JSTL xmlns namespace 差异?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7593603/

    10-12 19:50