2010-02-05 3 views
43

highlight_row 스타일이 적용지고,이 표현 언어를NULL 체크는

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

를 참조하십시오.

그래서 나는 highlight_row 적용지고, 그렇다하더라도
styleClass="#{empty obj.validationErrorMap ? ' ' : 
    obj.validationErrorMap.contains('key')?'highlight_field':'highlight_row'}" 

로 변경되었습니다.
지도가 empty OR null 인 경우 적용 할 스타일이 필요하지 않습니다.

어떤 도움이 필요합니까? 이 행동에 대한 이유는 무엇입니까?

+0

JBoss EL 확장 프로그램을 사용하고 있습니까? – Bozho

+0

나는 그렇다고 생각한다. jboss-el.jar은 server \ appl \ lib 폴더에 있습니다. – crazyTechie

답변

71

empty (null 및 비어 있음을 모두 확인) 및 중첩 된 삼항 식을 괄호로 그룹화합니다 (EL은 특정 구현/버전 즉 중첩 된 삼항 식에 다소 문제가 있음). 따라서, 이렇게 :

헛되이하면 여전히
styleClass="#{empty obj.validationErrorMap ? ' ' : 
(obj.validationErrorMap.contains('key') ? 'highlight_field' : 'highlight_row')}" 

(그때 보스 EL의 CONFIGS을 확인할 것), "정상적인"EL 접근 방식 사용

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

업데이트을 : 코멘트에 따라의 Map은 실제로는 List (이름 지정 규칙에 따라 작업하십시오)으로 밝혀졌습니다. List에 "일반"EL 방식이 포함되어 있는지 확인하려면 JSTLfn:contains을 사용하십시오 (명시 적으로 문서화되어 있지는 않지만 List에서도 작동 함).

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

감사. 나는 이것을 시험 할 것이다. validationErrorMap은 map이 아닙니다. 내 이름이 잘못되었습니다. 죄송합니다. 검증에 실패한 입력 필드 목록을 포함하는 배열 목록. – crazyTechie

+0

업데이트 제안에 감사드립니다. 처음에는지도를 사용하고 싶었습니다. 그래서 그 이름을주었습니다. 그러나 나중에 목록으로 변경되었습니다. 첫 번째 표현이 제대로 작동합니다 (괄호 사용). 고마워. – crazyTechie