Facelets to technologia widoku oparta na języku XML. Jest &
to znak specjalny w XML-u reprezentujący początek jednostki, na przykład &
kończący się ;
znakiem. Musisz albo uciec, co jest brzydkie:
rendered="#{beanA.prompt == true && beanB.currentBase != null}"
lub and
zamiast tego użyć słowa kluczowego, które jest preferowane ze względu na czytelność i łatwość konserwacji:
rendered="#{beanA.prompt == true and beanB.currentBase != null}"
Zobacz też:
Bez związku z konkretnym problemem, porównywanie wartości logicznych z wartościami logicznymi nie ma większego sensu, gdy wyrażenie oczekuje już wyniku boolowskiego. Pozbyłbym się == true
:
rendered="#{beanA.prompt and beanB.currentBase != null}"
Poza odpowiedzią BalusC, należy użyć następującego Java RegExp zastąpić
&&
zand
:Search: (#\{[^\}]*)(&&)([^\}]*\}) Replace: $1and$3
Wykonałeś tę zamianę wyrażenia regularnego wiele razy, aby znaleźć wszystkie wystąpienia w przypadku, gdy używasz> 2 literałów w wyrażeniach EL. Postaraj się zastąpić wiodący # znakiem $, jeśli składnia wyrażenia EL jest inna.
źródło