OverlyPanel primefaces在tabview中的对话框中无法正常工作
我在一个OverlyPanel primefaces在tabview中的对话框中无法正常工作,primefaces,overlay,panel,Primefaces,Overlay,Panel,我在一个p:tabp:dialog中使用了一个p:dialog中的基本面的动态覆盖面板,如下所示: <p:dialog id="dialog" modal="true" header="Nouveau Article" widgetVar="dlg"> <h:form prependId="false" enctype="multipart/form-data"> <p:tabView id="m
p:tabp:dialog
中使用了一个p:dialog
中的基本面的动态覆盖面板,如下所示:
<p:dialog id="dialog" modal="true" header="Nouveau Article"
widgetVar="dlg">
<h:form prependId="false" enctype="multipart/form-data">
<p:tabView id="monpanel">
<p:tab id="tab1" title="Informations">
....
</p:tab>
<p:tab id="tab2" title="Prix">
....
</p:tab>
<p:tab id="tab3" title="Stock et fournisseurs">
<h:outputLabel value="" /><h:outputLabel value="" /><h:outputLabel value="" />
<p:commandButton id="carBtn" value="Selectionner Fournisseurs" type="button" />
<p:overlayPanel appendToBody="true" my="left top" id="carPanel" for="carBtn" hideEffect="fade"
dynamic="true">
<p:dataTable id="table" var="car" rowKey="#{car.fournisseurId}"
value="#{articlesMB.listfournisseurs}" selection="#{articlesMB.selectedFournisseurs}"
rows="10" paginator="true" >
<p:column selectionMode="multiple" style="width:20px" />
<p:column headerText="Id">
<h:outputText value="#{car.fournisseurId}" />
</p:column>
<p:column headerText="Nom">
<h:outputText value="#{car.personne.nom}" />
</p:column>
</p:dataTable>
</p:overlayPanel>
</p:tab>
</p:tabView>
<p:commandButton id="article-ajouter"
update=":messages monpanel :articlesdata"
action="#{articlesMB.ajouter}" value="add" />
</h:form>
</p:dialog>
....
....
第一次,它工作正常,但当我单击add按钮,验证失败(出于任何原因)并单击OverlyPanel的dynamic按钮时,它出现了,但当我选中或取消选中datatable的某一行时,它消失了,我不知道原因
您是否知道如何解决此问题您可以使用“进程”属性,指定要提交信息的组件(而不是指定覆盖)
例如:
<p:inputText id="txttest" required="true" value="" />
<p:commandButton process="txttest" id="article-ajouter"
update=":messages monpanel :articlesdata"
action="#{articlesMB.ajouter}" value="add" />
覆盖面板只工作一次的原因是您更新了包含附加到overlypanel
的命令按钮的面板。
这是PF 5之后出现的OverlyPanel
中的一个错误。您可以在不使用process属性的情况下解决这个问题,我认为这样的解决方案会降低代码的可读性
如果您将widgetVar
定义为overlypanel
,则说'carPanelWDG'
,并在命令按钮的onComplete
事件中调用PF('carPanelWDG').loadContents()
函数,一切正常。即使没有任何评论解释你为什么做这样的事情,任何人都可以很容易地解释这一点。虽然我有很多组件要处理(只有一个或两个不是过程),那么我可以除了它而不是处理REST,例如:process=“@(:input:not(select))(处理输入组件但不选择组件)