2017-10-09 88 views
0

我遇到了p:tab问题。我GOOGLE了很多,但没有发现这个问题。根据selectOneMenu的值通过ajax显示和隐藏primefaces选项卡 - 隐藏选项卡而不更新tabview

根据selectOneMenu值的选择,我需要在tabView内显示/隐藏tab。所以,我已经使用了ajax,但问题是,当我更改selectOneMenu的值时,所有表单输入都被重置并且值丢失。

<p:tab id="informationTab">  
    <h:outputLabel for="situationFamiliale" value="Situation familiale: *" /> 
    <p:selectOneMenu id="situationFamiliale" value="#{bean.entity.attribut}" > 
    <f:selectItem itemLabel="Celibataire" itemValue="Celibataire" /> 
    <f:selectItem itemLabel="Marie(e)" itemValue="Marie(e)" /> 
    <f:ajax event="change" render="@form" /> 
    </p:selectOneMenu> 
</p:tab> 

<p:tab id="id" rendered="#{bean.entity.attribut== 'Marie(e)'}" title="Information Menage"> 

</p:tab>  
+0

尝试更新标签('update =“id”')而不是重新渲染整个表单('render =“@ form”')。 –

+0

我已经试过这个解决方案,但是在这种情况下我的选项卡没有出现。 –

回答

0

如果使用<f:ajax没有execute=,为execute默认为 '@this'。因此只有SelectOneMenu的值被发送到服务器。由于render="@form"整个表格将被重新排列,所有其他更改都将丢失。您可以使用f:ajax execute="@form" render="@form"...>。问题是,如果你想出现/消失一个标签,你必须重新渲染整个tabview。您无法使用呈现的属性重新渲染单个选项卡。

+0

这是我的问题,我确实想更新一个tab而没有整个tabView.it必须存在一个解决方案,不是吗? –

+0

这是唯一可能的,如果选项卡可能留在tabview中,但是为空。 ''。 现在你可以使用' Holger