Reset campi di input, senza eseguire la convalida

Ho un Facelets vista come di seguito:

<h:form id="f1">
<p:panelGrid id="p1" columns="2"> 
<p: inputText value="Distance Travelled::/><p:inputText value="#{airTransportUsage.distance}" immediate="true"
required="true" requiredMessage="Distance Travelled Field cannot be left blank.."
converterMessage="Distance Travelled must be a number"
validatorMessage="Distance Travelled must be a valid number.."
id="dis">
<f:validateLongRange minimum="1"/>
</p:inputText>
<p:commandButton value="Reset" action="#{airTransportUsage.reset}" update=":f1:p1" />
</p:panelGrid>
</h:form>

Quando il pulsante di reset viene premuto, il corrispondente metodo non può mai essere eseguito a causa di convalida. Non posso usare immediate="true" sul mio pulsante di reset in quanto crea altri problemi.

InformationsquelleAutor Basuz | 2012-09-27

 

2 Replies
  1. 25

    Il <p:commandButton> processi, infatti, per impostazione predefinita, l’intero modulo (process="@form"), è possibile modificare questa impostazione specifica solo la componente di corrente in process attributo.

    <p:commandButton value="Reset" ... process="@this" />

    Tuttavia, questo avrà esito negativo se il modulo è già stato convalidato in anticipo. I campi di input che sono stati contrassegnati come non validi non essere aggiornato con il nuovo modello di valore (che è stato resettato da solo). Se si utilizza PrimeFaces 3.4, quindi incorporare <p:resetInput> nel pulsante:

    <p:commandButton value="Reset" ... process="@this">
        <p:resetInput target="@form" />
    </p:commandButton>

    Se non PrimeFaces 3.4 di sicurezza e non può aggiornare, è possibile utilizzare OmniFaces ResetInputAjaxActionListener per questo.

    Completamente diversa e alternativa è solo aggiornare la pagina corrente con una nuova richiesta GET.

    <p:button value="Reset" />
    • grazie, funziona. 🙂
    • Sei il benvenuto.
  2. 4

    Questo ha funzionato per me in PrimeFaces 5.3

    <p:commandButton action="#{bean.reset()}" value="Reset" process="@this" update="@form" resetValues="true" />

    Probabilmente si può sostituire il "@form" destinazione dell’aggiornamento attributo di un componente specifico, se si desidera.

    • questo ha funzionato per me. Ho bisogno di entrambi i actionListener e il resetValues. grazie!

Lascia un commento