我使用 JSF 和 Primefaces 开始了一个新的 Java Web 应用程序项目。我厌倦了在不同的标签中打开不同的网页。例如,假设我有一些页面,如a.jsf
, b.jsf
。如果用户单击该a.jsf
页面,该页面应显示在新选项卡中(我正在使用p:tabView
),并且如果用户单击该b.jsf
页面,则该页面应显示在另一个新选项卡中,例如在 yahoo 中查看邮件(旧版本)
我可以动态生成选项卡,但问题是我无法查看页面内容。
我使用 JSF 和 Primefaces 开始了一个新的 Java Web 应用程序项目。我厌倦了在不同的标签中打开不同的网页。例如,假设我有一些页面,如a.jsf
, b.jsf
。如果用户单击该a.jsf
页面,该页面应显示在新选项卡中(我正在使用p:tabView
),并且如果用户单击该b.jsf
页面,则该页面应显示在另一个新选项卡中,例如在 yahoo 中查看邮件(旧版本)
我可以动态生成选项卡,但问题是我无法查看页面内容。
在选项卡中使用 iframe。你很快就会发现很难正确调整大小,而且我发现它在 IE 中不起作用(至少版本 8 及以下)。最好的方法是在两者之间构建 a.jsf 和 b.jsf 的代码,<p:tab>....</p:tab>
因为无论如何它们都是 JSF,所以应该不难。您可以使用 tabview 的动态属性来帮助提高页面加载性能。
这是我的代码..
<p:layoutUnit position="center" id="layoutCenter">
<h:form id="tabViewFormId">
<p:tabView id="tabViewId" value="#{multiTabBean.tabsList}"
activeIndex="#{multiTabBean.activeTabIndex}" var="tabView">
<p:ajax event="tabChange" listener="#{multiTabBean.onTabChange}"/>
<p:ajax event="tabClose" listener="#{multiTabBean.onTabClose}"/>
<p:tab title="#{tabView.title}" closable="true">
<ui:insert name="#{tabView.viewContent}" />
</p:tab>
</p:tabView>
</h:form>
</p:layoutUnit>