我在一个(主)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 错误。
最佳答案
任何外部 <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>
另请参阅:
关于javascript - Javascript 未在包含的 Facelets 页面中被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14872822/