2014-04-09 14 views
9

Ho creato un validatore personalizzato che non viene chiamato quando l'input è nullo.Il validatore personalizzato JSF non viene richiamato quando il valore di input inviato è nullo

Il mio codice di convalida:

@FacesValidator("requiredValidator") 
public class RequredValidation implements Validator { 

    public void validate(FacesContext context, UIComponent component, 
      Object value) throws ValidatorException { 
     System.out.println("in valid GGGGGGGG"); 

    } 

Il mio codice pagina XHTML:

<p:message for="urlInput" /> 

<p:inputText id="urlInputv" value="#{coverageBean.firstname}" label="URL" maxlength="2" > 
    <f:validator validatorId="requiredValidator"></f:validator> 
</p:inputText> 
<p:message for="urlInputv" /> 
<p:commandButton value="submit" action="#{loginBean.validateText}" /> 

Ora, questo sta lavorando quando sto entrando qualsiasi valore casella di testo, ma non funziona quando inputText è nullo .

Il server utilizza

  • Tomcat
  • primefaces 3,5
  • jsf2.0

prega si poteva dire qual è il problema?

+0

È '' relativo alla domanda o è solo l'aggiunta di rumore? – perissf

+0

aggiunge solo rumore. voglio solo chiamare il mio validatore anche quando inputtext è nullo – user3515365

+0

Bene, in questo caso modifica la domanda e rimuovila. – perissf

risposta

0

Hai provato a mettere:

<p:inputText id="urlInputv" required="true" 

.... 

richiesto vero è utilizzato per evitare di valore nullo da parte dell'utente. Se non si desidera avere un ingresso desiderata, quindi inizializzare il valore:

firstname = ""; //or a default value 
13

Per impostazione predefinita, JSF non convalidare un valore inviato vuoto se Bean Validation (JSR303) non è disponibile nell'ambiente. Questo comportamento può essere controllato con il parametro di contesto javax.faces.VALIDATE_EMPTY_FIELDS.

Il valore predefinito per javax.faces.VALIDATE_EMPTY_FIELDS è auto, nel senso che i campi vuoti vengono convalidati se Bean Validation (JSR303) è disponibile nel percorso classe.

Se si desidera convalidare i campi vuoti in ogni caso, senza Bean Validation, quindi impostare in modo esplicito il parametro di contesto nel vostro web.xml a true in questo modo:

<context-param> 
    <param-name>javax.faces.VALIDATE_EMPTY_FIELDS</param-name> 
    <param-value>true</param-value> 
</context-param> 

Va detto che normalmente si usa required="true" nel caso si desideri per convalidare un campo di input come richiesto. Quindi non è necessario eseguire quel lavoro nel tuo validatore personalizzato.

<p:inputText ... required="true" requiredMessage="Please enter value" /> 

Oppure, più astratto con <f:validateRequired>:

<p:inputText ... requiredMessage="Please enter value"> 
    <f:validateRequired /> 
</p:inputText> 

Da notare che è possibile utilizzare in modo sicuro più validatori sullo stesso componente di ingresso.

Problemi correlati