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

发布于 2024-12-07 03:54:44 字数 640 浏览 1 评论 0原文

我有一个基于 JSF 1.2 的 web 应用程序,我从中复制了 JSTL 导入。

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

您还可以在 Internet 上的许多地方找到此导入。我不记得上面的内容在我以前的 Web 项目中是否有效,无论如何,它在我当前基于 JSF 2.0 的 Web 应用程序中不起作用。我收到来自容器的警告:

警告:此页面调用 XML 命名空间 http://java.sun.com/jstl/core 声明前缀 c 但该名称空间不存在标记库。

然后,我将导入更改为

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

...,这消除了在基于 JSF/RichFaces 的 Web 应用程序中使用 的所有麻烦。

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

I have a JSF 1.2 based webapp from which I copied the JSTL import

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

You can also find this import in many places on the Internet. I can't remember whether the above worked in my former web project or not, in any case, it does not work in my current JSF 2.0 based webapp. I got a warning from the container saying:

Warning: This page calls for XML namespace http://java.sun.com/jstl/core declared with prefix c but no taglibrary exists for that namespace.

I then changed the import to

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

... which removed all headaches using <c:forEach> in a JSF/RichFaces-based webapp.

What's the trick here? Have there been any changes to the JSTL import URL from JSF 1.2 to 2.x? Or is the former line generally wrong (in JSF)? What's the difference between the two?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

北方。的韩爷 2024-12-14 03:54:45

查看我们的 JSTL wiki 页面: https://stackoverflow.com/tags/jstl/info 你可以获得这样的页面每当您将 标签悬停在问题下方,直到弹出黑框,然后点击信息链接。

确实,Facelets 1.x 和 2.x 对 JSTL 标记库使用不同的命名空间。它或多或少是 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 标签库中找到所有 Facelets 2.x 标签文档。 Facelet 不附带完整的标签集作为 真正的 JSTL taglib< /a>.仅将部分 和完整的 集合复制到 Facelet 中。 标记在 Facelet 中不会被接管。

Check our JSTL wiki page: https://stackoverflow.com/tags/jstl/info You can get this kind of page whenever you hover the tag below your question until a black box pops up and then click the info link.

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 http://java.sun.com/jstl/core.
  • The real JSTL 1.1/1.2 taglib uses the URI http://java.sun.com/jsp/jstl/core.
  • Facelets 1.x uses the URI http://java.sun.com/jstl/core.
  • Facelets 2.x uses the URI http://java.sun.com/jsp/jstl/core.
  • Facelets 2.2+ uses the URI http://xmlns.jcp.org/jsp/jstl/core.

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.

爱,才寂寞 2024-12-14 03:54:45

JSTL 现已成为 EL 的一部分。
它不依赖于 JSF 实现,而是取决于您的servlet容器所兼容的servlet版本。
因此这些必须运行在不同的服务器或同一服务器的不同版本上。


简短的答案是从2.4以上,jboss 7是。
如果您浏览 JSTL 文档此处,您会找到任何方法。
否则这里很好 链接
还有一个来自 BalusC 的此处

JSTL is now part of EL.
It is not dependent on JSF implementation but depends on what servlet version your servelet container is compliant for.
So these must be running of different servers or different versions of same server.


Short answer is from 2.4 upwards which jboss 7 is .
If you go through JSTL doc here you will find out any way.
Other wise here is good link.
And an other one here from BalusC.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文