http://xmlns.jcp.org命名空间中的标记不会呈现,而http://java.sun.com/jsf工作正常

Kor*_*bOK 4 jsf facelets xml-namespaces

我有这个:

<html 
    xmlns:f="http://xmlns.jcp.org/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
>
<h:selectOneRadio>
    <f:selectItem value="1" itemValue="1" itemLabel="123"/>
    <f:selectItem value="2" itemValue="2" itemLabel="321"/>
</h:selectOneRadio>
Run Code Online (Sandbox Code Playgroud)

我得到了这个:

<f:selectItem value="1" itemValue="1" itemLabel="123"></f:selectItem>
<f:selectItem value="2" itemValue="2" itemLabel="321"></f:selectItem>
<select name="j_idt5" size="1"></select>
Run Code Online (Sandbox Code Playgroud)

为什么xmlns:f="http://xmlns.jcp.org/jsf/core"标签没有呈现?

我在Netbeans 7.3上使用JBoss AS 7.

Bal*_*usC 9

http://xmlns.jcp.orgJSF 标记库URI中的新XML命名空间域是在JSF 2.2中引入的,它是Java EE 7的一部分.JBoss AS 7是一个兼容Java EE 6的应用程序服务器,不附带JSF 2.2捆绑,但使用JSF 2.1.因此,新的XML命名空间域根本不起作用.此外,新的JSF 2.2特定功能(如直通元素和属性)根本不起作用.

您需要使用JSF 2.1兼容的XML命名空间域http://java.sun.com.这是完整的集合:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets"
>
Run Code Online (Sandbox Code Playgroud)

我不确定您为什么尝试使用新的JSF 2.2 XML命名空间.也许您错误地阅读了JSF 2.2目标教程(例如Oracle Java EE 7教程)而不是JSF 2.0/2.1目标教程(例如Oracle Java EE 6教程).请注意版本匹配.

如果你真的打算在JBoss服务器上使用JSF 2.2,那么基本上你应该将旧的JBoss AS 7升级到兼容Java EE 7的后续版本WildFly 8.或者,按照此处的说明手动将JBoss AS 7的捆绑JSF库升级到更新版本:在JBoss AS/EAP/WildFly中升级JSF/Mojarra.