Facelets에서 EL 표현식을 수행하는 방법을 파악하는 데 약간의 문제가 있습니다. 그래서 기본적으로 다음과 같습니다.
<h:outputText id="Prompt"
value="Fobar"
rendered="#{beanA.prompt == true && beanB.currentBase !=null}" />
그러나 나는 계속 얻는다 :
오류 추적 [line : 69] 엔티티 이름은 엔티티 참조에서 ‘&’바로 뒤에 와야합니다.
답변
Facelets는 XML 기반보기 기술입니다. 는 &
A는 특수 문자 와 같은 엔티티의 시작을 나타내는 XML에 &
로 끝나는 ;
문자를. 당신은 그것을 탈출해야 할 것입니다.
rendered="#{beanA.prompt == true && beanB.currentBase != null}"
또는 and
가독성과 유지 관리 측면에서 선호되는 키워드를 대신 사용하십시오 .
rendered="#{beanA.prompt == true and beanB.currentBase != null}"
또한보십시오:
구체적인 문제와는 무관 하게, 표현식이 이미 부울 결과를 예상 할 때 부울과 부울을 비교하는 것은 의미가 없습니다. 나는 제거 할 것이다 == true
:
rendered="#{beanA.prompt and beanB.currentBase != null}"
답변
BalusC의 대답 또한, 교체하려면 다음과 같이 자바 정규식을 사용 &&
하여 and
:
Search: (#\{[^\}]*)(&&)([^\}]*\})
Replace: $1and$3
EL 표현식에서> 2 리터럴을 사용하는 경우 모든 발생을 찾기 위해이 정규 표현식 대체를 여러 번 실행했습니다. EL 표현식 구문이 다른 경우 선행 #을 $로 바꾸십시오.