Ho un caso d'uso specifico per la convalida JSF. Per esempio ho un inputText
campo:Convalida l'input come richiesto solo se viene premuto un determinato pulsante di comando
<p:inputText id="input" required="#{myBean.required}" value="#{myBean.value}" maxlength="20" disabled="#{myBean.disabled}">
<p:ajax event="blur" process="@this" update="name" listener="#{myBean.listener}"/>
</p:inputText>
valore di ingresso è il numero (in alcuni casi può anche essere una stringa, perché questa è parte del componente composito, ma il problema è meglio descritta se si assume che questo è un numero). Questo ingresso è parte del modulo, alla fine del modulo devo presentare pulsante:
<p:commandButton value="Save" actionListener="#{myBean.save}"/>
Quali sono le mie richieste:
- Quando pulsante di invio viene premuto tutta la convalida deve essere elaborato e questo è OK , funziona bene
- Quando l'evento di sfocatura viene attivato sul campo di input se il campo non è vuoto, è necessario elaborare una convalida del numero e anche questo è OK. Alla fine aggiorno il campo con l'id
name
con qualche valore. - Ora ho un problema. La mia terza richiesta è quando l'input è vuoto, la convalida sull'input non deve essere elaborata. Questo è un caso speciale in cui si cancellerà il campo con ID
name
. Questo è anche il caso in cui rimuovo il testo che è già inserito in input, rimuovi focus dal componente (premi TAB per esempio) e in quel caso dovrebbe essere elaborata anche la richiesta AJAX e anche l'immissione del nome verrà cancellata.
Come posso disabilitare la convalida di questo campo di input nel caso in cui sia vuoto, e solo per questo evento ajax?
Pensi che la convalida richiesta verrà saltata in quel caso? Perché? – partlov
Finché non si riempie (e quindi si modifica) l'input, la convalida non verrà attivata sulla sfocatura. – BalusC
Forse non ero chiaro con un caso d'uso specifico in terza richiesta. L'ho modificato L'utente può (probabilmente accidentalmente) rimuovere il testo e in tal caso l'input del nome verrà cancellato. – partlov