Java Script未在包含的Facelets页面中调用

时间:2013-02-14 10:34:56

标签: javascript jsf facelets jsf-1.2

我在一个(主要)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>

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

1 个答案:

答案 0 :(得分: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>

另见: