带有jsf复合组件的jsf输出标签2次

时间:2014-04-06 07:06:04

标签: java jsf glassfish

美好的一天!

在我的项目中,我有一个JSF自定义组件 档案ProjectRoot/web/resources/foo/bar.html

<?xml version='1.0' encoding='UTF-8' ?>
<!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:composite="http://xmlns.jcp.org/jsf/composite">

    <composite:interface>
        <composite:attribute name="title"/>
    </composite:interface>

    <composite:implementation>
        <h1>#{cc.attrs.title}</h1>
        <h:outputText value="foo"/>
    </composite:implementation>

</html>

然后我在另一个JSF页面中使用我的组件。 档案ProjectRoot/web/index.xhtml

<?xml version='1.0' encoding='UTF-8' ?>
<!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:foo="http://xmlns.jcp.org/jsf/composite/foo"
      >

    <f:view>
        <h:head>
            <title>JSFGantt</title>
        </h:head>
        <h:body>
            <foo:bar title="title"/>
        </h:body>
    </f:view>

</html>

我在部署应用程序后在浏览器中打开页面源代码,我看到了:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head id="j_idt2">
            <title>JSFGantt</title></head><body><html xmlns="http://www.w3.org/1999/xhtml">
        <h1>title</h1>foo

</html></body>

那么为什么JSF为页面上的每个复合组件输出<html>标签(在这种情况下为2次)?如何强制JSF每页只显示一个<html>

P.S。当然我的组件更复杂,这只是一个例子。 P.P.S.我使用Netbeans作为IDE和Glassfish 4作为Application Server。我尝试了另一个IDE,但在IntellijIdea中我遇到了一些问题。

0 个答案:

没有答案