Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 仅在显示复合组件代码时执行该代码_Java_Jsf_Primefaces_Dialog - Fatal编程技术网

Java 仅在显示复合组件代码时执行该代码

Java 仅在显示复合组件代码时执行该代码,java,jsf,primefaces,dialog,Java,Jsf,Primefaces,Dialog,我在PrimeFaces对话框中有一个JSF复合组件,该对话框具有动态=true(动态-支持使用ajax延迟加载内容)。组件在重写的encodeBegin方法中初始化。显示对话框时会发生这种情况 如果我删除动态属性,当对话框未显示并中断现有代码时,也会调用EncodeBeagin方法 是否只有在显示对话框时才能执行复合组件代码 以下是代码选择: <p:dialog id="actionsDialog" widgetVar="actionsDialogWidget" resizabl

我在PrimeFaces对话框中有一个JSF复合组件,该对话框具有
动态
=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())。