В EL нет такой вещи, как instanceof
.Однако вы можете (ab) использовать Object#getClass()
и получить доступ к получателям Class
в EL.Затем просто определите результат в атрибуте rendered
компонента.
<h:panelGroup rendered="#{entity.class.name == 'com.example.PhysicalPerson'}">
<p>According to Class#getName(), this is a PhysicalPerson.</p>
</h:panelGroup>
<h:panelGroup rendered="#{entity.class.simpleName == 'MoralPerson'}">
<p>According to Class#getSimpleName(), this is a MoralPerson.</p>
</h:panelGroup>
Однако пользовательская функция EL будет более чистой.Обратите внимание, что вышесказанное не работает на Tomcat 7 и клонах из-за крайне ограниченных ограничений разрешенных имен свойств в EL.Зарезервированные литералы Java, такие как class
, больше не разрешены.Вам нужно будет #{entity['class'].name}
и так далее.