我正在尝试在我的.xhtml中包含一个位于另一个域(在同一服务器上)的xhtml。
示例代码如下
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:head>
<h:outputStylesheet library="css" name="style.css" target="body" />
</h:head>
<h:body>
<p:layout id="page" fullPage="true">
<!-- North -->
<p:layoutUnit position="north" size="10%"
style="border: none !important">
</p:layoutUnit>
<!-- South -->
<p:layoutUnit position="south" size="5%" collapsible="true" gutter="0">
<h:outputText value="South unit Content." />
</p:layoutUnit>
<!-- West -->
<p:layoutUnit position="west" size="200" header="Menu"
collapsible="true" effect="slide" styleClass="menuBar">
<h:form id="form1">
<p:panelMenu>
<p:submenu label="Students">
<p:menuitem value="page1" update=":centerpanel"
actionListener="#{layoutController.setNavigation('page2.xhtml')}" />
<p:menuitem value="page2" update=":centerpanel"
actionListener="#{layoutController.setNavigation('http://localhost:8080/externalsite/newpage.xhtml')}" />
</p:submenu>
</p:panelMenu>
</h:form>
</p:layoutUnit>
<!-- Center -->
<p:layoutUnit id="center" position="center">
<h:panelGroup id="centerpanel" layout="block">
<ui:include id="include" src="#{layoutController.navigation}" />
</h:panelGroup>
</p:layoutUnit>
</p:layout>
</h:body>
</html>
所以基本上在中心布局单元中我试图包含外部.xhtml(但是在同一个域上)。
答案 0 :(得分:3)
如果JSF模板在同一个类加载器中可用,则只能包含它们。
如果您想在页面中嵌入外部页面,则需要使用 iframe 。
例如:
<iframe src="http://www.primefaces.org/showcase/ui/home.jsf"/>
允许您在页面中嵌入PrimeFaces展示。
答案 1 :(得分:1)
这是不可能的。使用ui:include
标记,您只能包含其他xhtml文件中的代码片段。您要做的是从另一个域访问代码,但您在最终的Web应用程序中看到的只是生成的HTML和Javascript代码。您无法在应用程序中使用它,因为您无权访问源代码。