Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSF2.2及以上版本使用哪个XML名称空间_Jsf_Facelets_Jsf 2.2_Xml Namespaces_Java Ee 7 - Fatal编程技术网

JSF2.2及以上版本使用哪个XML名称空间

JSF2.2及以上版本使用哪个XML名称空间,jsf,facelets,jsf-2.2,xml-namespaces,java-ee-7,Jsf,Facelets,Jsf 2.2,Xml Namespaces,Java Ee 7,我已经将我的应用程序从JSF1.2迁移到了2.2 它在java.sun.comdomain-likexmlns:f=”上使用了XML名称空间http://java.sun.com/jsf/core“。但是,在xmlns.jcp.orgdomain-like上使用XML名称空间 xmlns:f=”http://xmlns.jcp.org/jsf/core“ 推荐哪一种?为什么要更改 推荐哪一种 继续使用xmlns.jcp.org域上的XML名称空间。这是自2013年JavaEE7(涵盖了a.o.J

我已经将我的应用程序从JSF1.2迁移到了2.2

它在
java.sun.com
domain-like
xmlns:f=”上使用了XML名称空间http://java.sun.com/jsf/core“
。但是,在
xmlns.jcp.org
domain-like上使用XML名称空间
xmlns:f=”http://xmlns.jcp.org/jsf/core“

推荐哪一种?为什么要更改

推荐哪一种

继续使用
xmlns.jcp.org
域上的XML名称空间。这是自2013年JavaEE7(涵盖了a.o.JSF2.2、Servlet3.1、CDI1.1等)以来新引入的。请注意,这不仅会影响Facelets文件,还会影响XML配置文件,如、、等

java.sun.com
上的旧XML名称空间仍然存在,以实现向后兼容性,但这种支持最终将在未来的JavaEE版本中消失。您应该尽快迁移代码库。使用普通IDE提供的“在所有文件中查找和替换”功能,这应该是一项微不足道的任务

只有较旧的Mojarra 2.2.0/2.2.1版本存在与XML名称空间更改相关的错误,但这些错误不应在较新的版本中出现。另见a.o


为什么要改变呢

因为自2010年以来,Java不再来自Sun。请注意,他们很聪明,没有让它
java.oracle.com
或与当前拥有的公司紧密耦合的东西。它现在很好地独立地与JCP()绑定在一起,JCP()真正负责管理Java(EE)规范。

对于未来出现名称空间混乱/问题的访问者:

我想强调找出要使用哪个命名空间的一般方法:

  • 如果要使用JSF HTML标记库或JSF核心标记库中的标记,请打开JSF实现JAR(如Oracle Mojarra、Apache MyFaces-
    MyFaces-impl-2.3.1.JAR
    ),并找到标记库的
    .tld
    .xml
    文件(您可以在
    META-INF
    目录下找到它)并使用上面提到的名称空间
  • 如果要使用RichFaces或PrimeFaces,请打开它们的实现JAR(如
    RichFaces-components-ui-4.0.0.Final.JAR
    ,或
    PrimeFaces-6.2.JAR
    ),并执行与上面相同的操作
如果实现具有
.tld
(如
rich.tld
),则可以使用
元素的值,例如
http://richfaces.org/rich
。如果实现有
.xml
(比如
rich.taglib.xml
),那么您可以使用
元素的值,例如
http://richfaces.org/rich


我上面提到的内容与JSF严格相关,但总体上也很好。关键是,如果您使用实现JAR中的名称空间,那么您将永远不会遇到问题。

我简要总结了所有新的oracle官方名称空间:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:f="http://xmlns.jcp.org/jsf/core"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
    xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
    xmlns:p="http://xmlns.jcp.org/jsf/passthrough"
    xmlns:cc="http://xmlns.jcp.org/jsf/composite"
    xmlns:fn="http://xmlns.jcp.org/jsp/jstl/functions"      
    xmlns:jsf="http://xmlns.jcp.org/jsf">

    <!-- Content here -->
</html>

我将此用作所有.xhtml文件的模板。详细信息可在官方facelet标记库中找到:


希望这有帮助:)

使用
http://xmlns.jcp.org/...
,如果您使用的是JSF 2.2.x。这是一个新的JSF2.2东西(JSF2.4不存在,顺便说一句,你应该错误地输入它,它应该是JSF2.2.4)?最新的稳定是2.2和2.3正在开发中。我认为你把事情搞混了。2.2已经有了jcp名称空间是的,它是2.2.4。键入时出错。在faces-config.xml、web.xml、beans.xml等中需要做哪些更改?我做了快速检查,它似乎只是通过改变名称空间工作。如果你能分享任何合适的链接,这将是很有帮助的。