2012-06-12 12 views
8

Mam formularz z dużą ilością inputText, ale chcę zaznaczyć tych, którzy nie są wypełnione poprawnymi danymi.Wyróżnij inputText w JSF, gdy pojawi się błąd sprawdzania poprawności

Próbowałem użyć "component.valid", ale zawsze zwraca, że ​​pole jest nieprawidłowe (tj. Pola są zawsze czerwone).

jest to kod:

<h:inputText value="#{creerPersonne1.nom}" id="nom" 
    style="#{not nom.valid ? 'border-color:red;' : 'border-color:black;'}"> 
    <f:validateRegex pattern="^[a-zA-Z]+$"></f:validateRegex> 
</h:inputText> 

jest to wynik:

Always invalid

uwaga, że ​​pole jest również podświetlony, gdy strona jest ładowana po raz pierwszy.

+1

Napisałeś "component.valid" w swoim tekście, ale twój kod pokazuje "nom.valid". Czy próbowałeś (poprawnego) 'component.valid'? –

Odpowiedz

20

Powinieneś użyć component.valid zamiast nom.valid.

component to niejawny obiekt EL dla bieżącego komponentu wejściowego. I component.valid wywołuje metodę isValid() składnika po stronie serwera. Argumentu id nie można użyć w ten sposób.

Należy więc zmienić swój kod w następujący sposób:

style="#{ component.valid ? 'border-color:black;' : 'border-color:red;'}" 

(niezwiązanych ale należy lepiej wykorzystywać lekcje stylu zamiast zakodowanego style Poprawny check pracuje dla styleClass atrybutów, jak również.).

+0

Rzeczywiście, pomyślałem, że komponent musiał zostać zastąpiony rzeczywistym identyfikatorem komponentu:/ Dzięki. – Eildosa

+0

Przy okazji, po prostu nauczyłem się, że te nie będą działać bez zależności "walidatora hibernacji" – Eildosa

Powiązane problemy