Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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
Jsf 2 XML名称空间在模板客户机中是否有效?_Jsf 2 - Fatal编程技术网

Jsf 2 XML名称空间在模板客户机中是否有效?

Jsf 2 XML名称空间在模板客户机中是否有效?,jsf-2,Jsf 2,这不是什么大问题,但我只是想提高我对规范的理解 我开始使用ui:composition作为JSF页面的根元素。当我的模板开始使用不在客户端中的标记库时,我会在呈现的页面上收到警告消息 因此,Netbeans向导为我提供了以下信息: <?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.

这不是什么大问题,但我只是想提高我对规范的理解

我开始使用ui:composition作为JSF页面的根元素。当我的模板开始使用不在客户端中的标记库时,我会在呈现的页面上收到警告消息

因此,Netbeans向导为我提供了以下信息:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
            template="./template.xhtml">

<ui:define name="content">
    <h1>A simple page</h1>
    <p>
        Hi there.
    </p>
</ui:define>

所以我添加了xmlns声明,一切都很好,但这是它应该工作的方式吗?如果不是JSF规范、XML规范的不连续性,或者只是Mojarra实现的不连续性,或者以上都没有,那么它与普通Java代码类似。如果要使用任何类,必须通过导入它们的库进行声明。XML名称空间只是声明要使用的标记库时需要包含的内容。XML名称空间在模板客户机中是有效的,这是绝对正常的

此外,如果使用
作为根元素,则不应使用普通的HTML标记。相反,您应该将它们更改为等效的JSF标记。如果需要使用HTML标记,请使用
作为根元素,警告将消失

但这就是它应该工作的方式吗


对。JSF(特别是Facelets)利用普通的旧XML。模板客户端和模板定义都是XML文档,因此都需要根据XML规范指定其元素的名称空间。换句话说,XML解析器不知道它解析的文档稍后会被JSF解释为模板客户机定义,而是将其解析为“只是另一个文档”。

JSF与h1标记的等价物是什么?这是否意味着,如果我选择使用ui:composition作为根标记,我将失去编写HTML的所有能力?并非所有HTML标记都具有等效的JSF标记。JSF没有任何等同于
h1
的标记。但是,您可以尝试这样的方法来放大文本。是的,如果在
中使用HTML标记作为根标记,您将看到很多警告。
Warning: This page calls for XML namespace declared with prefix p but no taglibrary exists for that namespace.
Warning: This page calls for XML namespace declared with prefix h1 but no taglibrary exists for that namespace.