1

p:commandButton は、シングル クリックで操作を実行しません。次の表があります。

                  <p:dataTable id="firmasTabla" var="car" editable="true" editMode="cell" value="#{clientesMB.itemsPersonaFirmanUtil}"  widgetVar="carsTable">  

                        <p:ajax event="cellEdit" listener="#{clientesMB.modiCellPersonaFirma}" update=":form2:growl" />  
                        <p:column headerText="Nro CI" style="width:30%">  
                            <p:cellEditor>  
                                <f:facet name="output"><h:outputText value="#{car.ci}" /></f:facet>  
                                <f:facet name="input"><p:inputText id="modelInput" value="#{car.ci}" style="width:96%"/></f:facet>  
                            </p:cellEditor>  
                        </p:column> 
                        <p:column headerText="Nombre" style="width:60%">  
                            <p:cellEditor>  
                                <f:facet name="output"><h:outputText value="#{car.nombre}" /></f:facet>  
                                <f:facet name="input"><p:inputText id="modelInput2" value="#{car.nombre}" style="width:96%"/></f:facet>  
                            </p:cellEditor>  
                        </p:column> 
                        <p:column style="width:10%">  
                            <p:commandButton id="selectButton256" actionListener="#{clientesMB.deleteSelecPersonaFirmaCliente}" 
                                             icon="ui-icon-trash" title="Eliminar" update="firmasTabla">  
                                <f:setPropertyActionListener value="#{car}" target="#{clientesMB.personaFirmasSelect}" />  
                            </p:commandButton>  
                        </p:column> 
                    </p:dataTable> 

操作を実行するには 2 回クリックする必要があります。backingbean には次のメソッドがあります。

    public void deleteSelecPersonaFirmaCliente() throws Exception {
    try {
        boolean b = this.getItemsPersonaFirmanUtil().remove(personaFirmasSelect);
        boolean b1 = b; 
    } catch (Exception e) {
        JsfUtil.addErrorMessage(e, "Error: deleteSelecPersonaFirmaCliente() " + e.getMessage());

    }
}

デバッグ中に最初のクリックでメソッドに入りますが、削除するオブジェクトがリストに見つからないかのようです。次に、リスト オブジェクトを削除する sugundo をクリックします。

4

2 に答える 2

5

アクションはf:setPropertyActionListenerの後に実行されるため、 p:commandButtonでactionlistenerの代わりにactionを使用します。

actionlistenerが初めて実行されるとき、 f:setPropertyActionListenerが終了する前に実行されるため、オブジェクト セットが見つかりませんでしたが、これは常に発生するとは限りません。これは、シングルクリックが機能する理由を説明しています。

于 2013-04-16T19:01:47.193 に答える