Jsf selectBooleanCheckBox在p:对话框中不能单独工作

Jsf selectBooleanCheckBox在p:对话框中不能单独工作,jsf,jsf-2,primefaces,Jsf,Jsf 2,Primefaces,我有一个按钮,当我点击它时,对话框就会出现,在这个对话框中,我有p:selectBooleanCheckBox和h:outputable <table style="width: 100%" id="tabell"> <p:selectOneButton value="#{inviteRequestManagedBean.filterType}"> <f:selec

我有一个按钮,当我点击它时,对话框就会出现,在这个对话框中,我有
p:selectBooleanCheckBox
h:outputable

            <table style="width: 100%" id="tabell">
                <p:selectOneButton  value="#{inviteRequestManagedBean.filterType}">  
                    <f:selectItem itemLabel="#{inviteRequest_msg.request}" itemValue="request" />  
                    <f:selectItem itemLabel="#{inviteRequest_msg.archive}" itemValue="archive" />   
                    <f:ajax event="change"  execute="@form" render="@form" />             
                    <tr>
                        <td>
                            <p:panel></p:panel>

                            <p:dataGrid id="requestDataGrid" var="tBusinessPartnerRequestInfo" 
                                        value="#{inviteRequestManagedBean.filterBusinessRequest()}" columns="1" >

                                <p:column>
                                    <div>
                                        <table border="0"  width="100%">
                                            <tr>
                                                <td>
                                                    <p:graphicImage value="#{tBusinessPartnerRequestInfo.partySender_imageUrl}"/>
                                                </td>
                                                <td>
                                                    <div>
                                                        <table border="0" width="100%">
                                                            <tr>
                                                                <td>
                                                                    <h:outputLabel value="#{tBusinessPartnerRequestInfo.requestDate}"/>
                                                                </td>
                                                            </tr>
                                                            <tr>
                                                                <td>
                                                                    <h:outputLabel value="#{tBusinessPartnerRequestInfo.partySender_fullName}"/>
                                                                </td>
                                                            </tr>
                                                        </table>
                                                    </div>
                                                </td>    
                                                <td>

                         <p:commandButton  id="acceptCommonButton" value="#{inviteRequest_msg.accept}"
                                                                      onclick="dlg.show()" />
                                                </td>


                                                <td>
                                                    <p:commandButton  id="noNowCommonButton" value="#{inviteRequest_msg.notnow}"  
                                                                      actionListener="#{inviteRequestManagedBean.notNowRequest(tBusinessPartnerRequestInfo.id)}" 
                                                                      update="@form" />
                                                </td>
                                                <p:blockUI block="acceptCommonButton" trigger="acceptCommonButton"/>
                                                <p:blockUI block="noNowCommonButton" trigger="acceptCommonButton"/>
                                                <p:blockUI block="acceptCommonButton" trigger="noNowCommonButton"/>
                                                <p:blockUI block="noNowCommonButton" trigger="noNowCommonButton"/>

                                                <td>
                                                    <p:panel>
                                                        <p:ajaxStatus>
                                                            <f:facet name="start">
                                                                <p:graphicImage value="../resources/img/loading.gif"/>
                                                            </f:facet>
                                                            <f:facet name="complete">
                                                                <h:outputLabel value=""/>
                                                            </f:facet>
                                                        </p:ajaxStatus>
                                                    </p:panel>
                                                </td>
                                            </tr>
                                        </table>
                                    </div>
                                    <hr/>
                                </p:column>
                            </p:dataGrid>                   
                        </td>
                    </tr>
                </p:selectOneButton>

            </table>

    </h:panelGrid>
    <h:panelGrid>
        <p:dialog  appendToBody="true"  header="Selected Values" modal="false" showEffect="fade" hideEffect="fade" widgetVar="dlg">  
                <h:panelGrid columns="1" id="display">  
                    <p:dataGrid id="AcceptDataGrid" var="tBusinessPartnerRequestInfo" value="#{inviteRequestManagedBean.loadPartyRelationShipType()}"
                                columns="1" >
                        <tr>
                            <td>
                                <p:selectBooleanCheckbox/>
                            </td>
                            <td>
                                <h:outputLabel value="test"/>
                            </td>
                        </tr>
                    </p:dataGrid>
                 <p:commandButton  id="acceptCommonButton" value="#{inviteRequest_msg.accept}"  
                                  actionListener="#{inviteRequestManagedBean.acceptRequest(tBusinessPartnerRequestInfo.id)}" 
                                  update="display" oncomplete="dlg.hide()"  />

                </h:panelGrid> 

        </p:dialog>
    </h:panelGrid>
</ui:composition>
第一个问题是,当出现p:dialog时,我无法分别选择
p:selectBooleanCheckBox
。这意味着当我点击其中一个时,所有的
p:selectBooleanCheckBox
choose

            <table style="width: 100%" id="tabell">
                <p:selectOneButton  value="#{inviteRequestManagedBean.filterType}">  
                    <f:selectItem itemLabel="#{inviteRequest_msg.request}" itemValue="request" />  
                    <f:selectItem itemLabel="#{inviteRequest_msg.archive}" itemValue="archive" />   
                    <f:ajax event="change"  execute="@form" render="@form" />             
                    <tr>
                        <td>
                            <p:panel></p:panel>

                            <p:dataGrid id="requestDataGrid" var="tBusinessPartnerRequestInfo" 
                                        value="#{inviteRequestManagedBean.filterBusinessRequest()}" columns="1" >

                                <p:column>
                                    <div>
                                        <table border="0"  width="100%">
                                            <tr>
                                                <td>
                                                    <p:graphicImage value="#{tBusinessPartnerRequestInfo.partySender_imageUrl}"/>
                                                </td>
                                                <td>
                                                    <div>
                                                        <table border="0" width="100%">
                                                            <tr>
                                                                <td>
                                                                    <h:outputLabel value="#{tBusinessPartnerRequestInfo.requestDate}"/>
                                                                </td>
                                                            </tr>
                                                            <tr>
                                                                <td>
                                                                    <h:outputLabel value="#{tBusinessPartnerRequestInfo.partySender_fullName}"/>
                                                                </td>
                                                            </tr>
                                                        </table>
                                                    </div>
                                                </td>    
                                                <td>

                         <p:commandButton  id="acceptCommonButton" value="#{inviteRequest_msg.accept}"
                                                                      onclick="dlg.show()" />
                                                </td>


                                                <td>
                                                    <p:commandButton  id="noNowCommonButton" value="#{inviteRequest_msg.notnow}"  
                                                                      actionListener="#{inviteRequestManagedBean.notNowRequest(tBusinessPartnerRequestInfo.id)}" 
                                                                      update="@form" />
                                                </td>
                                                <p:blockUI block="acceptCommonButton" trigger="acceptCommonButton"/>
                                                <p:blockUI block="noNowCommonButton" trigger="acceptCommonButton"/>
                                                <p:blockUI block="acceptCommonButton" trigger="noNowCommonButton"/>
                                                <p:blockUI block="noNowCommonButton" trigger="noNowCommonButton"/>

                                                <td>
                                                    <p:panel>
                                                        <p:ajaxStatus>
                                                            <f:facet name="start">
                                                                <p:graphicImage value="../resources/img/loading.gif"/>
                                                            </f:facet>
                                                            <f:facet name="complete">
                                                                <h:outputLabel value=""/>
                                                            </f:facet>
                                                        </p:ajaxStatus>
                                                    </p:panel>
                                                </td>
                                            </tr>
                                        </table>
                                    </div>
                                    <hr/>
                                </p:column>
                            </p:dataGrid>                   
                        </td>
                    </tr>
                </p:selectOneButton>

            </table>

    </h:panelGrid>
    <h:panelGrid>
        <p:dialog  appendToBody="true"  header="Selected Values" modal="false" showEffect="fade" hideEffect="fade" widgetVar="dlg">  
                <h:panelGrid columns="1" id="display">  
                    <p:dataGrid id="AcceptDataGrid" var="tBusinessPartnerRequestInfo" value="#{inviteRequestManagedBean.loadPartyRelationShipType()}"
                                columns="1" >
                        <tr>
                            <td>
                                <p:selectBooleanCheckbox/>
                            </td>
                            <td>
                                <h:outputLabel value="test"/>
                            </td>
                        </tr>
                    </p:dataGrid>
                 <p:commandButton  id="acceptCommonButton" value="#{inviteRequest_msg.accept}"  
                                  actionListener="#{inviteRequestManagedBean.acceptRequest(tBusinessPartnerRequestInfo.id)}" 
                                  update="display" oncomplete="dlg.hide()"  />

                </h:panelGrid> 

        </p:dialog>
    </h:panelGrid>
</ui:composition>
第二个问题是,当我在对话框中单击
p:commandButton
时,
actionListener
会工作,但不会消失,并且会永久显示。我认为这个问题是由Ajax引起的。你能告诉我如何解决这个问题吗

              <h:panelGrid>
                <p:dialog  appendToBody="true"  header="Selected Values" modal="false" showEffect="fade" hideEffect="fade" widgetVar="dlg">  
                        <h:panelGrid columns="1" id="display">  
                            <p:dataGrid id="AcceptDataGrid" var="tBusinessPartnerRequestInfo" value="#{inviteRequestManagedBean.filterBusinessRequest()}"
                                        columns="1" >
                                <tr>
                                    <td>
                                        <p:selectBooleanCheckbox/>
                                    </td>
                                    <td>
                                        <h:outputLabel value="test"/>
                                    </td>
                                </tr>
                            </p:dataGrid>
                        <p:commandButton  id="acceptCommonButton" value="#{inviteRequest_msg.accept}"  
                                          actionListener="#{inviteRequestManagedBean.acceptRequest(tBusinessPartnerRequestInfo.id)}" 
                                          update="display" />
                        </h:panelGrid> 


                </p:dialog>
            </h:panelGrid>
            <table style="width: 100%" id="tabell">
                <p:selectOneButton  value="#{inviteRequestManagedBean.filterType}">  
                    <f:selectItem itemLabel="#{inviteRequest_msg.request}" itemValue="request" />  
                    <f:selectItem itemLabel="#{inviteRequest_msg.archive}" itemValue="archive" />   
                    <f:ajax event="change"  execute="@form" render="@form" />             
                    <tr>
                        <td>
                            <p:panel></p:panel>

                            <p:dataGrid id="requestDataGrid" var="tBusinessPartnerRequestInfo" 
                                        value="#{inviteRequestManagedBean.filterBusinessRequest()}" columns="1" >

                                <p:column>
                                    <div>
                                        <table border="0"  width="100%">
                                            <tr>
                                                <td>
                                                    <p:graphicImage value="#{tBusinessPartnerRequestInfo.partySender_imageUrl}"/>
                                                </td>
                                                <td>
                                                    <div>
                                                        <table border="0" width="100%">
                                                            <tr>
                                                                <td>
                                                                    <h:outputLabel value="#{tBusinessPartnerRequestInfo.requestDate}"/>
                                                                </td>
                                                            </tr>
                                                            <tr>
                                                                <td>
                                                                    <h:outputLabel value="#{tBusinessPartnerRequestInfo.partySender_fullName}"/>
                                                                </td>
                                                            </tr>
                                                        </table>
                                                    </div>
                                                </td>    
                                                <td>

                         <p:commandButton  id="acceptCommonButton" value="#{inviteRequest_msg.accept}"
                                                                      onclick="dlg.show()" />
                                                </td>


                                                <td>
                                                    <p:commandButton  id="noNowCommonButton" value="#{inviteRequest_msg.notnow}"  
                                                                      actionListener="#{inviteRequestManagedBean.notNowRequest(tBusinessPartnerRequestInfo.id)}" 
                                                                      update="@form" />
                                                </td>
                                                <p:blockUI block="acceptCommonButton" trigger="acceptCommonButton"/>
                                                <p:blockUI block="noNowCommonButton" trigger="acceptCommonButton"/>
                                                <p:blockUI block="acceptCommonButton" trigger="noNowCommonButton"/>
                                                <p:blockUI block="noNowCommonButton" trigger="noNowCommonButton"/>

                                                <td>
                                                    <p:panel>
                                                        <p:ajaxStatus>
                                                            <f:facet name="start">
                                                                <p:graphicImage value="../resources/img/loading.gif"/>
                                                            </f:facet>
                                                            <f:facet name="complete">
                                                                <h:outputLabel value=""/>
                                                            </f:facet>
                                                        </p:ajaxStatus>
                                                    </p:panel>
                                                </td>
                                            </tr>
                                        </table>
                                    </div>
                                    <hr/>
                                </p:column>
                            </p:dataGrid>                   
                        </td>
                    </tr>
                </p:selectOneButton>

            </table>

    </h:panelGrid>
    <h:panelGrid>
        <p:dialog  appendToBody="true"  header="Selected Values" modal="false" showEffect="fade" hideEffect="fade" widgetVar="dlg">  
                <h:panelGrid columns="1" id="display">  
                    <p:dataGrid id="AcceptDataGrid" var="tBusinessPartnerRequestInfo" value="#{inviteRequestManagedBean.loadPartyRelationShipType()}"
                                columns="1" >
                        <tr>
                            <td>
                                <p:selectBooleanCheckbox/>
                            </td>
                            <td>
                                <h:outputLabel value="test"/>
                            </td>
                        </tr>
                    </p:dataGrid>
                 <p:commandButton  id="acceptCommonButton" value="#{inviteRequest_msg.accept}"  
                                  actionListener="#{inviteRequestManagedBean.acceptRequest(tBusinessPartnerRequestInfo.id)}" 
                                  update="display" oncomplete="dlg.hide()"  />

                </h:panelGrid> 

        </p:dialog>
    </h:panelGrid>
</ui:composition>


            <table style="width: 100%" id="tabell">
                <p:selectOneButton  value="#{inviteRequestManagedBean.filterType}">  
                    <f:selectItem itemLabel="#{inviteRequest_msg.request}" itemValue="request" />  
                    <f:selectItem itemLabel="#{inviteRequest_msg.archive}" itemValue="archive" />   
                    <f:ajax event="change"  execute="@form" render="@form" />             
                    <tr>
                        <td>
                            <p:panel></p:panel>

                            <p:dataGrid id="requestDataGrid" var="tBusinessPartnerRequestInfo" 
                                        value="#{inviteRequestManagedBean.filterBusinessRequest()}" columns="1" >

                                <p:column>
                                    <div>
                                        <table border="0"  width="100%">
                                            <tr>
                                                <td>
                                                    <p:graphicImage value="#{tBusinessPartnerRequestInfo.partySender_imageUrl}"/>
                                                </td>
                                                <td>
                                                    <div>
                                                        <table border="0" width="100%">
                                                            <tr>
                                                                <td>
                                                                    <h:outputLabel value="#{tBusinessPartnerRequestInfo.requestDate}"/>
                                                                </td>
                                                            </tr>
                                                            <tr>
                                                                <td>
                                                                    <h:outputLabel value="#{tBusinessPartnerRequestInfo.partySender_fullName}"/>
                                                                </td>
                                                            </tr>
                                                        </table>
                                                    </div>
                                                </td>    
                                                <td>

                         <p:commandButton  id="acceptCommonButton" value="#{inviteRequest_msg.accept}"
                                                                      onclick="dlg.show()" />
                                                </td>


                                                <td>
                                                    <p:commandButton  id="noNowCommonButton" value="#{inviteRequest_msg.notnow}"  
                                                                      actionListener="#{inviteRequestManagedBean.notNowRequest(tBusinessPartnerRequestInfo.id)}" 
                                                                      update="@form" />
                                                </td>
                                                <p:blockUI block="acceptCommonButton" trigger="acceptCommonButton"/>
                                                <p:blockUI block="noNowCommonButton" trigger="acceptCommonButton"/>
                                                <p:blockUI block="acceptCommonButton" trigger="noNowCommonButton"/>
                                                <p:blockUI block="noNowCommonButton" trigger="noNowCommonButton"/>

                                                <td>
                                                    <p:panel>
                                                        <p:ajaxStatus>
                                                            <f:facet name="start">
                                                                <p:graphicImage value="../resources/img/loading.gif"/>
                                                            </f:facet>
                                                            <f:facet name="complete">
                                                                <h:outputLabel value=""/>
                                                            </f:facet>
                                                        </p:ajaxStatus>
                                                    </p:panel>
                                                </td>
                                            </tr>
                                        </table>
                                    </div>
                                    <hr/>
                                </p:column>
                            </p:dataGrid>                   
                        </td>
                    </tr>
                </p:selectOneButton>

            </table>

    </h:panelGrid>
    <h:panelGrid>
        <p:dialog  appendToBody="true"  header="Selected Values" modal="false" showEffect="fade" hideEffect="fade" widgetVar="dlg">  
                <h:panelGrid columns="1" id="display">  
                    <p:dataGrid id="AcceptDataGrid" var="tBusinessPartnerRequestInfo" value="#{inviteRequestManagedBean.loadPartyRelationShipType()}"
                                columns="1" >
                        <tr>
                            <td>
                                <p:selectBooleanCheckbox/>
                            </td>
                            <td>
                                <h:outputLabel value="test"/>
                            </td>
                        </tr>
                    </p:dataGrid>
                 <p:commandButton  id="acceptCommonButton" value="#{inviteRequest_msg.accept}"  
                                  actionListener="#{inviteRequestManagedBean.acceptRequest(tBusinessPartnerRequestInfo.id)}" 
                                  update="display" oncomplete="dlg.hide()"  />

                </h:panelGrid> 

        </p:dialog>
    </h:panelGrid>
</ui:composition>

这里是p:dialog调用的位置

            <table style="width: 100%" id="tabell">
                <p:selectOneButton  value="#{inviteRequestManagedBean.filterType}">  
                    <f:selectItem itemLabel="#{inviteRequest_msg.request}" itemValue="request" />  
                    <f:selectItem itemLabel="#{inviteRequest_msg.archive}" itemValue="archive" />   
                    <f:ajax event="change"  execute="@form" render="@form" />             
                    <tr>
                        <td>
                            <p:panel></p:panel>

                            <p:dataGrid id="requestDataGrid" var="tBusinessPartnerRequestInfo" 
                                        value="#{inviteRequestManagedBean.filterBusinessRequest()}" columns="1" >

                                <p:column>
                                    <div>
                                        <table border="0"  width="100%">
                                            <tr>
                                                <td>
                                                    <p:graphicImage value="#{tBusinessPartnerRequestInfo.partySender_imageUrl}"/>
                                                </td>
                                                <td>
                                                    <div>
                                                        <table border="0" width="100%">
                                                            <tr>
                                                                <td>
                                                                    <h:outputLabel value="#{tBusinessPartnerRequestInfo.requestDate}"/>
                                                                </td>
                                                            </tr>
                                                            <tr>
                                                                <td>
                                                                    <h:outputLabel value="#{tBusinessPartnerRequestInfo.partySender_fullName}"/>
                                                                </td>
                                                            </tr>
                                                        </table>
                                                    </div>
                                                </td>    
                                                <td>

                         <p:commandButton  id="acceptCommonButton" value="#{inviteRequest_msg.accept}"
                                                                      onclick="dlg.show()" />
                                                </td>


                                                <td>
                                                    <p:commandButton  id="noNowCommonButton" value="#{inviteRequest_msg.notnow}"  
                                                                      actionListener="#{inviteRequestManagedBean.notNowRequest(tBusinessPartnerRequestInfo.id)}" 
                                                                      update="@form" />
                                                </td>
                                                <p:blockUI block="acceptCommonButton" trigger="acceptCommonButton"/>
                                                <p:blockUI block="noNowCommonButton" trigger="acceptCommonButton"/>
                                                <p:blockUI block="acceptCommonButton" trigger="noNowCommonButton"/>
                                                <p:blockUI block="noNowCommonButton" trigger="noNowCommonButton"/>

                                                <td>
                                                    <p:panel>
                                                        <p:ajaxStatus>
                                                            <f:facet name="start">
                                                                <p:graphicImage value="../resources/img/loading.gif"/>
                                                            </f:facet>
                                                            <f:facet name="complete">
                                                                <h:outputLabel value=""/>
                                                            </f:facet>
                                                        </p:ajaxStatus>
                                                    </p:panel>
                                                </td>
                                            </tr>
                                        </table>
                                    </div>
                                    <hr/>
                                </p:column>
                            </p:dataGrid>                   
                        </td>
                    </tr>
                </p:selectOneButton>

            </table>

    </h:panelGrid>
    <h:panelGrid>
        <p:dialog  appendToBody="true"  header="Selected Values" modal="false" showEffect="fade" hideEffect="fade" widgetVar="dlg">  
                <h:panelGrid columns="1" id="display">  
                    <p:dataGrid id="AcceptDataGrid" var="tBusinessPartnerRequestInfo" value="#{inviteRequestManagedBean.loadPartyRelationShipType()}"
                                columns="1" >
                        <tr>
                            <td>
                                <p:selectBooleanCheckbox/>
                            </td>
                            <td>
                                <h:outputLabel value="test"/>
                            </td>
                        </tr>
                    </p:dataGrid>
                 <p:commandButton  id="acceptCommonButton" value="#{inviteRequest_msg.accept}"  
                                  actionListener="#{inviteRequestManagedBean.acceptRequest(tBusinessPartnerRequestInfo.id)}" 
                                  update="display" oncomplete="dlg.hide()"  />

                </h:panelGrid> 

        </p:dialog>
    </h:panelGrid>
</ui:composition>



你的标记有点吓人,我不明白为什么你的
中有这么多东西,你说的
是什么意思,但它不会消失,而且会永久显示出来
你是说一直显示的对话框吗?您必须在某个时候通过调用dlg.hide()来隐藏它。@Alexandre:谢谢。是的,我使用了“oncomplete=”dlg.hide()”并解决了第二个问题。但是第一个问题仍然存在:(那么,
对话框
是否最终隐藏?顺便说一句,如果验证失败,您的对话框将隐藏,因为它只等待ajax请求完成。是的,对话框现在隐藏。但是我仍然无法单独选择p:selectBooleanCheckBox。当我要选择其中一个时,所有对话框都已选中。请显示对话框的相关部分。)触发对话框打开的facelet,以及循环的父元素(