2010-02-05 14 views
43

Proszę zobaczyć to wyrażenie jezykzerowy sprawdzić w JSF języka ekspresji

styleClass="#{obj.validationErrorMap eq null ? ' ' : 
    obj.validationErrorMap.contains('key')?'highlight_field':'highlight_row'}" 

Nawet jeśli mapa jest null, highlight_row styl jest stosowany coraz.

Więc zmieniłem do

styleClass="#{empty obj.validationErrorMap ? ' ' : 
    obj.validationErrorMap.contains('key')?'highlight_field':'highlight_row'}" 

Nawet wtedy, highlight_row jest stosowana coraz.
jeśli mapa jest empty OR null Nie chcę żadnego stylu do zastosowania.

Każda pomoc? i przyczyny tego zachowania?

+0

Czy korzystasz z rozszerzenia JBoss EL? – Bozho

+0

Myślę, że tak. jboss-el.jar znajduje się w folderze server \ appl \ lib. – crazyTechie

Odpowiedz

71

Użyj empty (sprawdza zarówno pustkę jak i pustkę) i pogrupuj zagnieżdżone wyrażenie trójskładowe za pomocą nawiasów (EL jest w pewnych implementacjach/wersjach, a mianowicie jest nieco problematyczne z zagnieżdżonymi potrójnymi wyrażeniami). Zatem tak:

styleClass="#{empty obj.validationErrorMap ? ' ' : 
(obj.validationErrorMap.contains('key') ? 'highlight_field' : 'highlight_row')}" 

Jeśli wciąż na próżno (Chciałbym następnie sprawdzić JBoss EL configs), użyj "normalna" EL podejście:

styleClass="#{empty obj.validationErrorMap ? ' ' : 
(obj.validationErrorMap['key'] ne null ? 'highlight_field' : 'highlight_row')}" 

Aktualizacja: Zgodnie z uwag Map okazuje się być w rzeczywistości List (proszę pracować nad konwencjami nazewnictwa). Aby sprawdzić, czy List zawiera element "normalny" sposób EL, użyj JSTLfn:contains (chociaż nie jest to jawnie udokumentowane, działa również dla List).

+0

Dzięki. Testuję to. validationErrorMap nie jest mapą. Moje niepoprawne nazewnictwo. Przepraszam. Lista tablic zawierająca listę pól wejściowych, dla których sprawdzanie poprawności nie powiodło się. – crazyTechie

+0

Dzięki za sugestię w aktualizacji. Chciałem początkowo użyć mapy. Tak nadałem to imię. Ale później zmieniono na listę. Pierwsze wyrażenie działa poprawnie (używając nawiasów). Wielkie dzięki – crazyTechie