首页 > 解决方案 > 如何在primefaces中的任何形式之外更新tabView

问题描述

我正在尝试更新任何表单之外的 tabView,因为每个选项卡内部都有自己的表单,但我还想在创建父对象之前隐藏所有 tabView。

它仅在第一次按预期加载表单时起作用,但一旦加载,我就无法刷新 tabView。

我应该添加嵌入式表单还是重新加载整个页面?

表单.xhtml

<h:form id="frmWork">
    ...
   <p:commandButton id="btnEdit" value="#{msgs.edit}"
                    styleClass="Fright"
                    actionListener="#{workBean.edit()}"
                    update="frmWork tabView"
                    rendered="#{!workBean.editable}"/>
</h:form>
<p:tabView id="tabView" activeIndex="#{workBean.tabIndex}"
           rendered="#{!workBean.editable and workBean.work.id ne null}">
    <p:ajax event="tabChange" listener="#{workBean.onTabChange}"/>
    <p:tab id="tabDelNotes" title="#{msgs.deliverynotes}">
       <ui:include src="work_delNotes.xhtml" />
    </p:tab>
    <p:tab id="tabOrders" title="#{msgs.ord_orders}">
       <ui:include src="work_orders.xhtml" />
    </p:tab>
    <p:tab id="tabTasks" title="#{msgs.tasks}">
       <ui:include src="work_tasks.xhtml" />
    </p:tab>
    <p:tab id="tabContacts" title="#{msgs.contacts}">
       <ui:include src="work_contacts.xhtml"/>
    </p:tab>
</p:tabView>

标签: jsfprimefacestabs

解决方案


如果rendered您的 tabView 中的 评估为 false,则 tabView 不会呈现并且不能成为update=. 你可以<h:panelGroup id="updater"在你的 tabView 周围放一个并使用update="updater"


推荐阅读