You seem to be using Facelets (which is perfectly fine). It's however a XML based view technology. Everything which you write in Facelets has to be syntactically valid XML. The &
is in XML a special character denoting the start of an entity like &
, <
, >
,  
, etc.
If you would like to represent the &
as-is in XML, then you'd have to replace it by &
.
<h:outputText value="#{(sel.description !=null) && (sel.description !='') ? sel.description : 'Empty description'} - "/>
However, that's not pretty readable, you would rather like to use the alternative EL operator and
for this (see also operators in EL for an overview of all available operators in EL):
<h:outputText value="#{(sel.description !=null) and (sel.description !='') ? sel.description : 'Empty description'} - "/>
All with all, this is in turn pretty clumsy as there's a simpler empty
keyword for the purpose of testing both nullness and emptiness. This can in your particular case be used as:
<h:outputText value="#{not empty sel.description ? sel.description : 'Empty description'} - "/>
or
<h:outputText value="#{!empty sel.description ? sel.description : 'Empty description'} - "/>
or
<h:outputText value="#{empty sel.description ? 'Empty description' : sel.description} - "/>