2013-01-18 28 views
10

Quando viene premuto il pulsante Save, i dati dal actionsDialog devono essere convalidati. Se le informazioni richieste sono state inserite e valide, verrà visualizzata una seconda finestra di dialogo denominata reasonDialog.Come attivare args.validationFailed in PrimeFaces incompleto

La convalida non JSF dell'oggetto salvato viene eseguita con un metodo che restituisce un elenco di messaggi di errore. Se la convalida fallisce, i messaggi di errore vengono visualizzati con FacesMessage. Come devo fare in objectsBean.validate per attivare la clausola if else da oncomplete?

<p:dialog id="actionsDialog" widgetVar="actionsDialog" dynamic="true" 
    resizable="false" width="800" modal="true"> 
    <ui:include src="/WEB-INF/flows/custom-flow/genericObject.xhtml"/> 
    <f:facet name="footer"> 
     <p:commandButton value="Save" update="msgs" 
      oncomplete="if (args.validationFailed) {reasonDialog.hide()} else {reasonDialog.show()}" 
      actionListener="#{objectsBean.validate}"/> 
     <p:commandButton value="Cancel" immediate="true" oncomplete="actionsDialog.hide()" /> 
    </f:facet> 
</p:dialog> 

risposta

17

Se utilizzando l'impianto di validazione JSF-integrato (vale a dire basta usare validatori che gettano ValidatorException solito modo con esso il messaggio desiderato facce) non è realmente un'opzione per qualche motivo (mi piacerebbe davvero che per due volte, senza , tre volte circa il lavoro attorno alla funzione di convalida JSF), quindi è sempre possibile utilizzare FacesContext#validationFailed() per segnalare a JSF che la convalida non è riuscita in generale, che è esattamente ciò che la funzione di convalida JSF sta facendo sotto le coperture quando viene catturato uno ValidatorException.

FacesContext.getCurrentInstance().validationFailed(); 
+0

O eseguo questa operazione o lancio un'eccezione, il ciclo di vita JSF continua, aggiorna i valori del modello e richiama l'applicazione. C'è un modo per fermare il rendering della pagina quando la validazione fallisce? – MounirReg

+0

@Mounir: questo non è un comportamento normale. Basta fare una domanda come spiegato qui http://stackoverflow.com/tags/jsf/info in modo da poter osservare, eseguire il debug e inchiodare il problema nel caso in cui non si è all'altezza di tale compito. – BalusC