Java 仅在显示复合组件代码时执行该代码
我在PrimeFaces对话框中有一个JSF复合组件,该对话框具有Java 仅在显示复合组件代码时执行该代码,java,jsf,primefaces,dialog,Java,Jsf,Primefaces,Dialog,我在PrimeFaces对话框中有一个JSF复合组件,该对话框具有动态=true(动态-支持使用ajax延迟加载内容)。组件在重写的encodeBegin方法中初始化。显示对话框时会发生这种情况 如果我删除动态属性,当对话框未显示并中断现有代码时,也会调用EncodeBeagin方法 是否只有在显示对话框时才能执行复合组件代码 以下是代码选择: <p:dialog id="actionsDialog" widgetVar="actionsDialogWidget" resizabl
动态
=true(动态-支持使用ajax延迟加载内容)。组件在重写的encodeBegin
方法中初始化。显示对话框时会发生这种情况
如果我删除动态属性,当对话框未显示并中断现有代码时,也会调用EncodeBeagin方法
是否只有在显示对话框时才能执行复合组件代码
以下是代码选择:
<p:dialog id="actionsDialog"
widgetVar="actionsDialogWidget" resizable="false" width="800"
height="600" showEffect="fade" hideEffect="fade" modal="true">
<h:form id="confirmationWizardForm">
<acme:actionWizard name="wizard" widgetVar="wiz" bean="#{accountsBean}"
header="#{accountsBean.entityHeader}"
update="form:genericAccounts" onClose="actionsDialogWidget.hide()" />
</h:form>
</p:dialog>
...
<p:commandButton value="Add"
action="#{accountsBean.initializeEntity}" process="@this"
update=":actionsDialog" oncomplete="actionsDialogWidget.show()">
...
问题在于,您正在从客户端控制可见性,这意味着对话框的标记已生成,但仍被css规则隐藏
可以注意到这一点,例如分析素数面-在按下“基本”命令按钮之前,对话框是隐藏的,但是当对话框未显示时,HTML
是否将visible'或
rendered`设置为false?否。我没有任何属性控制对话框的呈现。因此,您可以控制它在客户端的可见性?是的。PrimeFaces对话框公开了两种方法:show
和hide
(例如:actionsDialogWidget.show())。