当前位置: 首页 > 知识库问答 >
问题:

primefaces选项卡使用动态选项卡查看不同的选项卡内容

吕鸿轩
2023-03-14

我对tabView有问题。第一个选项卡应始终显示相同的内容(称为搜索模板,用#{not curSearch.isClosable()}标识)。所有其他选项卡都是搜索实例(用#{curSearch.isClosable()}标识)

代码如下:

<p:tabView id="searchTabViewId" var="curSearch" value="#{searchBL.searchInstances}"
  activeIndex="#{searchBL.activeTabIndex}" styleClass="searchTabView">
  <!-- search template tab -->
  <ui:include src="/icarchive/sections/search/firstSearchTab.xhtml">
     <ui:param name="curSearch" value="#{curSearch}" />
  </ui:include>
  <!-- search instances tabs -->
  <ui:include src="/icarchive/sections/search/searchInstanceTab.xhtml">
     <ui:param name="curSearch" value="#{curSearch}" />
  </ui:include>
</p:tabView>

不幸的是,在第一个选项卡上有一些被称为curSearch对象的方法,这些方法仅在第二个选项卡和后面的选项卡上使用。如果我不使用ui:insert,它不会改变任何东西。谁知道我的错在哪里?

问候奥利弗

共有2个答案

龙星辰
2023-03-14

我也有同样的问题,我发现的唯一解决方案是在其他组件中包含包裹,并用渲染钳制显示哪个组件。对于初始加载,如果您的id取决于内容,则需要设置id前缀,以使其不允许空id字段:

<p:tabView id="tabsView" dynamic="true" cache="true"
           value="#{TabViewController.tabView.openedTabs}" var="tabDefinition" activeIndex="#{TabViewController.tabView.activeIndex}">
    <p:ajax event="tabClose" listener="#{TabViewController.onCloseTab}" update="tabsView"/>
    <p:ajax event="tabChange" update="tabsView"/>
    <p:tab id="tab#{tabDefinition.id}" title="#{tabDefinition.title}" closable="true" action="">
        <f:facet name="title">
            <h:outputText value="#{tabDefinition.title}"/>
        </f:facet>
        <p:outputPanel style="display:block" rendered="#{'dataTable'.equals(tabDefinition.type)}">
            <ui:include src="dataTable.xhtml">
                <ui:param name="dataTableName" value="#{tabDefinition.contentName}"/>
            </ui:include>
        </p:outputPanel>
        <p:outputPanel style="display:block" rendered="#{'form'.equals(tabDefinition.type)}">
            <ui:include src="form.xhtml">
                <ui:param name="formId" value="#{tabDefinition.id}"/>
                <ui:param name="formName" value="#{tabDefinition.contentName}"/>
            </ui:include>
        </p:outputPanel>
    </p:tab>
</p:tabView>
平庆
2023-03-14

这项工作:

<p:tabView id="searchTabViewId" styleClass="searchTabView" activeIndex="#{searchBL.activeTabIndex}">

  <!-- do the iteration over the search instances NOT in the tabView because this will not work with ui:include -->
  <c:forEach items="#{searchBL.searchInstances}" var="curSearch">

     <p:tab closable="#{curSearch.isCloseable()}">

        <f:facet name="title">
           <p:graphicImage library="images" name="search_tab.png" height="16" styleClass="tabImage"
              rendered="#{not curSearch.isCloseable()}" />
           <h:outputText value="#{curSearch.title}" />
        </f:facet>

        <!-- do not use 2 ui:includes here, the dynamic must be in the src attribute to get it work -->
        <ui:include
           src="#{curSearch.closeable ? '/sections/search/searchInstanceTab.xhtml' : '/sections/search/firstSearchTab.xhtml'}">
           <ui:param name="curSearch" value="#{curSearch}" />
        </ui:include>

     </p:tab>

  </c:forEach>
 类似资料:
  • 在我的应用程序中,我想使用一个动态tabView,其中每个选项卡都有一个不同页面的< code>ui:include。我有一个扩展< code>Tab的< code>TabObject列表。< code>TabObject有一个xhtml页面作为字符串属性: 在我的第一次尝试中,我想动态添加选项卡: 但是不适用于使用此技术的变量。到目前为止,我的解决方案是: 这是我的方法: 在事件回调中,我无法获

  • 问题内容: 嗨,我想遍历一个人对象列表,并在每个人的选项卡中显示数据。我试过了: 这是行不通的。任何帮助表示赞赏 PrimeFaces 3.x的tabView现在支持动态数量的选项卡,并增加了自己的迭代功能: 不幸的是,仍然不可能在同一个tabView中同时包含固定和动态选项卡(正如我想做的那样),甚至无法在不重建视图的情况下动态添加选项卡。幸运的是,当使用SessionScoped或CDI Co

  • 我有一个左向的Tabview。 我想减少选项卡标题的数量,它们太大了。我该怎么做?

  • 两个tab <div class="ui-tab "> <ul class="ui-tab-nav ui-border-b "> <li class="current"><span>热门</span></li> <li><span>热门</span></li> </ul> <ul class="ui-tab-content" sty

  • 打开选项卡 打开新选项卡于 设置新的弹出窗口如何打开: 选项 描述 最后打开选项卡的窗口 在最后打开的窗口打开一个新的选项卡。 新窗口 打开一个新的窗口。 允许重复打开相同的对象 如果你想允许一个对象可打开多个实例,可勾选这个选项。 选项卡列样式 永远显示选项卡栏 打开窗口时显示标签栏。

  • 打开新选项卡于 设置新的弹出窗口如何打开: 选项 描述 主窗口 在主窗口中打开一个新的选项卡。 最后打开选项卡的窗口 在最后打开的窗口打开一个新的选项卡。如果没有任何已打开的窗口,会打开一个新的窗口。 新窗口 打开一个新的窗口。 启动画面 控制在启动 Navicat 时出现哪些选项卡: 选项 描述 仅打开对象选项卡 仅打开对象选项卡,没有其他选项卡。 从上次离开的画面继续 打开对象选项卡,并重新打