我在一个(主要)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错误。
答案 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>