0

我在一个(主)Facelets 页面中有以下代码,

<h:panelGroup rendered="true">  
            <ui:insert>
                <ui:include src="/includeSecondPage.xhtml" />
           </ui:insert>
</h:panelGroup>

以下是 includeSecondPage.xhtml 页面中的内容,

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:f="http://java.sun.com/jsf/core">
<head>
<script type="text/javascript">
/* <![CDATA[ */

   function myScript () 
   {
        alert("Inside myScript");
   }

   myScript();

    /* ]]> */
</script>
</head>
<f:view>
<body>

<h:form id="secondForm">
<ui:composition>

<h:outputText value="This panel is called using Component Control Component"></h:outputText>

</ui:composition>
</h:form>
</body>
</f:view>
</html>

我的 Java 脚本没有在我的 includeSecondPage.xhtml 中被调用。我的第一个(主)页面中没有弹出警报框,其中包括第二个页面。Java Script 控制台中没有 Java Script 错误。

4

1 回答 1

2

在包含期间,外部的任何内容都会<ui:composition>被丢弃。外部的任何内容<ui:composition>仅由 Dreamweaver 等可视化编辑器使用,并且实际上应仅以这种方式表示“填充”内容,以便“正确”可视化表示包含内容。如果您通过右键单击在浏览器中查看源代码仔细查看了 JSF 生成的 HTML 输出,您会注意到这些部分在 HTML 输出中完全不存在。

将包含内容放入<ui:composition>. 如果您不使用可视化编辑器,那么也只需摆脱外部的任何内容<ui:composition>。以下是整个包含文件的样子:

<ui:composition
    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">
    <script type="text/javascript">
        // <![CDATA[

        function myScript () {
            alert("Inside myScript");
        }

        myScript();

        // ]]>
    </script>

    <h:outputText value="This panel is called using Component Control Component" />
</ui:composition>

也可以看看:

于 2013-02-14T11:34:10.450 回答