0

我有这个代码,目前正在工作:

<?xml version="1.0" encoding="UTF-8"?>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
   xmlns:ui="http://java.sun.com/jsf/facelets"
   xmlns:f="http://java.sun.com/jsf/core"
   xmlns:h="http://java.sun.com/jsf/html"
   xmlns:p="http://primefaces.org/ui"
   template="/templates/default.xhtml">

    <ui:define name="content">

        <h:form id="form">     

            <p:dataTable id="clienti" var="c" value="#{clientiController.clienti}" rowKey="#{c.id}">

                <p:column headerText="Ragione sociale">
                    <h:outputText value="#{c.ragioneSociale}" />
                </p:column>
                <p:column headerText="Codice fiscale">
                    <h:outputText value="#{c.codiceFiscale}" />
                </p:column>

                <p:column style="width:4%">
                    <p:commandButton 
                        update=":formDialog:clienteEditDialog" 
                        oncomplete="clienteEditDialog.show()" 
                        value="Modifica"
                        title="Modifica">
                            <f:setPropertyActionListener value="#{c}" target="#{clientiController.clienteSelezionato}" />
                    </p:commandButton>
                </p:column>

            </p:dataTable>        

            <p:commandButton 
                value="Aggiorna" 
                actionListener="#{clientiController.aggiorna}" 
                update=":form:clienti" 
                icon="ui-icon-arrowrefresh-1-n" />

            <p:commandButton 
                value="Nuovo Cliente" 
                actionListener="#{clientiController.nuovo}" 
                update=":formDialog:clienteEditDialog" 
                oncomplete="clienteEditDialog.show()" />

        </h:form>       

        <h:form id="formDialog">

            <p:dialog 
                header="Modifica Cliente" 
                widgetVar="clienteEditDialog" 
                id="clienteEditDialog"
                showEffect="fade" 
                hideEffect="explode" 
                closable="true">

                    <h:panelGrid id="clienteEditDialogTable" columns="2" cellpadding="10" style="margin:0 auto;">

                        <p:outputLabel for="fieldNome" value="Ragione Sociale:" />
                        <p:inputText id="fieldNome" value="#{clientiController.clienteSelezionato.ragioneSociale}" />

                        <p:outputLabel for="fieldCodice" value="Codice:" />
                        <p:inputText id="fieldCodice" value="#{clientiController.clienteSelezionato.codiceFiscale}" required="true" requiredMessage="Codice fiscale obbligatorio" />


                    </h:panelGrid>

                    <p:commandButton 
                        value="Conferma modifiche" 
                        actionListener="#{clientiController.modifica}" 
                        update=":form:clienti" 
                        oncomplete="clienteEditDialog.hide()"
                        rendered="#{clientiController.clienteSelezionato.id!=null}" />

                    <p:commandButton 
                        value="Conferma nuovo cliente" 
                        actionListener="#{clientiController.crea}" 
                        update=":form:clienti" 
                        oncomplete="clienteEditDialog.hide()"
                        rendered="#{clientiController.clienteSelezionato.id==null}" />


            </p:dialog>

        </h:form>

    </ui:define>

</ui:composition>

现在我真的希望我的对话框是模态的,所以我将modal=true添加到我的 .

结果是我的对话框出现在叠加层的“下方”。

经过一番搜索,我发现appendToBody=true可以解决我的问题,所以我尝试了一下,我的对话框以正确的方式出现。

但是... WTF ??! 对话框内的按钮停止工作!

漏洞?或者有什么解决办法吗?

4

1 回答 1

1

<h:form id="formDialog">在对话框内移动

因为当您使用appendToBody=true附加到BODY页面的对话框的内容时...并且在您的情况下,它被带到外部h:form并且您知道 commandButtons 必须驻留在 ah:form中才能工作...。

像这样

<p:dialog appendToBody="true".....
       <h:form id="formDialog">
           .....

使用dialogsallays 时,请记住将您h:forms放在对话框中...

于 2012-12-27T08:32:21.977 回答