微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

检查我们的JSTL Wiki页面每当您将鼠标悬停在jstl在您的问题下方标记,直到弹出黑框,然后单击信息链接

的确,Facelets 1.x2.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的接管。

解决方法

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

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

您也可以在Internet上的许多地方找到此导入。我不记得是否在我以前的Web项目上合作与否,在任何情况下,它不工作,我目前的JSF 2.0 Web应用基础。我从集装箱收到警告说:

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

然后,我将导入更改为

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

…这消除了<c:forEach>在基于JSF / RichFacesWebapp中使用的所有头痛问题。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。