Ответ 1
Фасет представляет именованный раздел в компоненте контейнера. Например, вы можете создать заголовок и фасет нижнего колонтитула для компонента dataTable. https://web.archive.org/web/20170828020413/http://www.jsftoolbox.com/documentation/help/12-TagReference/core/f_facet.html
Это полезно, когда вы хотите создать компонент, который использует некоторый код от пользователя (скажем, обертка).
то есть. когда вы хотите создать компонент, который скрывает длинный текст и показывает его короткую версию. Вы можете использовать только тело элемента, но тогда вы получите только одно значение, если вы хотите получить от пользователя короткую И длинную версию, то вы не можете сделать это в одном значении (без использования некоторого дискриминанта), просто используйте фасет и скажи, какая из них длинная, а какая короткая.
<textShortener>
<f:facet name="short">
This text is short.
</f:facet>
<f:facet name="long">
This text is too <b>long</b to be showed when page loads. User have to click the button after the short text to show this.
</f:facet>
</textShortener>
Да, это можно (и нужно) сделать с помощью шаблонов jsf, но я надеюсь, что вы это поняли.
На вопрос: вы определили фасет только в диком xml, никто не запрашивал его, поэтому никто не обрабатывал его - поэтому он не выдал ошибку и ничего не показал.