2013-07-10 3 views
0

내 문제는 조건에 따라 h:panelGroup을 표시해야합니다. h:panelGroup의 경우 rendered 속성이 이미 설정되었습니다.표시 방법 h : 조건에 따라 panelGroup

<c:if test="${program.distTypeName != 'X' || program.distTypeName != 'Y' || program.distTypeName != 'Z'}"> 

<h:panelGroup rendered="#{not empty program.categories}"> 
    <li> 
     <strong>Category: </strong> 
     <h:outputLabel value="#{not empty program.categories ? 'A':'N/A'}" /> 
    </li> 
</h:panelGroup> 

을하지만이 작동하지 않습니다 :

<h:panelGroup rendered="#{not empty program.categories}"> 
    <li> 
     <strong>Category: </strong> 
     <h:outputLabel value="#{not empty program.categories ? 'A':'N/A'}"/> 
    </li> 
</h:panelGroup> 

지금 나는 아래의 코드와 같은 상태를 유지하기 위해 노력하고 있습니다. 내가 뭘 잘못하고 있는지 말해줘. 기본적으로 disType이 x, y, z가 아닌 경우 h:panelGroup을 표시해야합니다.

not in 상태를 jstl 태그로 테스트하려면 어떻게해야합니까? 미리 감사드립니다.

+1

이 [링크] (http://stackoverflow.com/questions/4870462/conditionally-displaying-jsf-components/4870557#4870557) 도움이 될 것입니다

<h:panelGroup rendered="#{program.distTypeName ne 88 || program.distTypeName ne 89 || program.distTypeName ne 90}"> 

당신. – danRod

+0

하지만 내 시나리오에서 렌더링 된 atrribute를 사용할 수있는 방법은 무엇입니까? 이 작동하지 않습니다.이 경우에만 h : panelGroup .. 전체 양식에 대한 조건을 확인해야합니다. 제발 제안 해주세요. – sahithi

+0

'의'rendered' 속성 안에''조건을 옮깁니다. – Andy

답변

0

JSTL 태그와 JSF 태그는 동기식이 아닙니다. JSF 태그가 렌더링 시간에 실행되는 동안 JSTL 태그는 빌드 타임에 실행됩니다. 그래서 이상한 행동을 보게됩니다. c:if 대신 JSF rendered 속성을 사용해야합니다.

또한 char 비교는 Java와 다르게 작동합니다. 챠리스는 EL 표현식에서 문자열처럼 동작합니다. 즉, 연산자는 String 비교에 대해 적절한 결과를 제공하지 않습니다. c:if 문 위

<c:if test="${program.distTypeName != 'X' || program.distTypeName != 'Y' || program.distTypeName != 'Z'}"> 

distTypeNamechar 경우도 여기에 사용할 수있는 문자의

<h:panelGroup rendered="#{program.distTypeName.compareTo('X') != 0 || program.distTypeName.compareTo('Y') != 0 || program.distTypeName.compareTo('Z') != 0}"> 

또는 ASCII 표현처럼 렌더링 속성으로 변환 할 수 있습니다. 관련 포스트

https://stackoverflow.com/a/4154930/892994

+0

참조 이것은 원인이 아닐 가능성이 큽니다. 지금까지 OP 게시판의 코드는 완벽하게 합법적입니다. 지금까지 게시 된 코드가 실제로 ''또는 ''과 같은 JSF 리피터 구성 요소 안에있는 경우에만 문제가 발생할 수 있지만 질문에 아무것도 표시되지 않습니다. 빈 이름'# {program} '은 이미 빈킹 빈이 아닌 엔티티를 나타내는 큰 힌트입니다. – BalusC