2014-04-09 14 views
9

Utworzono własny weryfikator, który nie jest wywoływany, gdy wejście ma wartość null.Własny weryfikator JSF nie jest wywoływany, gdy przesłana wartość wejściowa ma wartość null

Mój kod walidator:

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

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

    } 

Moja strona kodowa 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}" /> 

Teraz to działa, gdy jestem wprowadzając dowolną wartość w polu tekstowym, ale to nie działa, gdy inputText jest null .

Serwer używa

  • Tomcat
  • primefaces 3,5
  • jsf2.0

Proszę ktoś może powiedzieć w czym jest problem?

+0

Czy '' odnosi się do pytania lub po prostu dodaje szum? – perissf

+0

to tylko dodawanie szumów. ijust zadzwoń do mojego walidatora nawet wtedy, gdy inputtext ma wartość null – user3515365

+0

Cóż, w tym przypadku edytuj pytanie i usuń je. – perissf

Odpowiedz

0

Czy spróbować umieścić:

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

.... 

wymagane prawdą jest używany w celu uniknięcia zerowej wartości przez użytkownika. Jeśli nie chcesz mieć wymagany nakład, a następnie zainicjować swoją wartość:

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

Domyślnie JSF nie sprawdza pusty przedłożone wartość, jeśli Bean Validation (JSR303) nie jest dostępna w środowisku. To zachowanie można kontrolować za pomocą parametru kontekstowego javax.faces.VALIDATE_EMPTY_FIELDS.

Domyślną wartością dla javax.faces.VALIDATE_EMPTY_FIELDS jest auto, co oznacza, że ​​puste pola są sprawdzane, jeśli funkcja Bean Validation (JSR303) jest dostępna w ścieżce klasy.

Jeśli chcesz sprawdzić poprawność pustych pól w każdym razie bez Bean Validation, a następnie jawnie ustawić parametr kontekstowego w swojej web.xml do true tak:

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

należy stwierdzić, że normalnie używać required="true" w przypadku, gdy chcesz aby zatwierdzić pole wejściowe zgodnie z wymaganiami. Nie musisz wtedy wykonywać tego zadania w swoim niestandardowym walidatorze.

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

Albo, bardziej abstrakcyjne z <f:validateRequired>:

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

Należy pamiętać, że można bezpiecznie korzystać z wielu weryfikatorów na tym samym składniku wejściowego.

Powiązane problemy