В соответствии со спецификацией JSF 2.0 существует три способа использования h: graphicImage в зависимости от способа, с помощью которого JSF генерирует атрибут "src" тега HTML:
<h:graphicImage value="#{resource['images:next.gif']}"/>
<h:graphicImage library="images" name="next.gif"/>
<h:graphicImage url="/resources/images/next.gif"/>
В спецификации указано, что первые два должны отображать точно такую же разметку. В моей реализации JSF (MyFaces 2.0.2) здесь выведен HTML-код вывода:
<img src="/AppName/faces/javax.faces.resource/next.gif?ln=images">
<img src="/AppName/faces/javax.faces.resource/next.gif?ln=images">
<img src="/AppName/resources/images/next.gif">
Итак, кажется, что если я использую (имя, библиотеку) или (значение) атрибуты, изображение всегда будет передаваться клиенту с помощью сервлета JSF. Если я использую (url) атрибут, я могу дать прямую ссылку на ресурс без вмешательства сервлета.
Для меня второй подход - прямой URL-адрес сервера к ресурсу, быстрее.
В каких случаях следует использовать первый подход - указание (имя, библиотека) или (значение) атрибутов?