JSF 1.2和JSF 2.x之间的JSTL xmlns名称空间差异?

Kaw*_*awu 20 import jsf jstl xml-namespaces jsf-2

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

xmlns:c="http://java.sun.com/jstl/core"
Run Code Online (Sandbox Code Playgroud)

您还可以在Internet上的许多位置找到此导入.我不记得上面无论是在我以前的Web项目的工作或没有,在任何情况下,它并没有在我目前的JSF 2.0 Web应用基础工作.我收到集装箱的警告说:

警告:此页面调用带有前缀c声明的XML命名空间http://java.sun.com/jstl/core,但该命名空间不存在taglibrary.

然后我将导入更改为

xmlns:c="http://java.sun.com/jsp/jstl/core"
Run Code Online (Sandbox Code Playgroud)

... <c:forEach>在基于JSF/RichFaces的webapp中删除了所有令人头疼的问题.

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

Bal*_*usC 42

查看我们的JSTL维基页面:https://stackoverflow.com/tags/jstl/info每当您将标记悬停在问题下方时,您都可以获得此类页面,直到弹出一个黑框,然后单击信息链接.

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标记.只有少数<c:xxx>和全套<fn:xxx>复制到Facelets中.的<fmt:xxx>,<sql:xxx>并且<xml:xxx>标签不Facelets的接管.