В самой простой части вашего вопроса, я бы сказал, что нет заметной проблемы с производительностью в отношении использования пользовательского компонента в сравнении с встроенными тегами лицевой стороны. Хотя для вас это выглядит сложно, сервлет Faclets все равно должен выбирать и компилировать примерно одинаковое количество элементов XML в любом случае.
Помимо вопросов, обсуждаемых в теме, с которой связан BalusC, я бы добавил, что основная цель расширяемости JSF - позволить разработчику максимально использовать код повторно. Еще одним преимуществом является то, что ваша страница клиента Facelet (на которой используется шаблон) будет настолько компактной и лаконичной, насколько это возможно для разметки XML.
Мой опыт показывает, что это может быть обоюдоострый меч. Вы можете потратить много времени на разработку, сидя и настраивая пользовательские компоненты, где вам было бы лучше просто «идти на компромисс» и выполнять вырезание и вставку с рабочей страницы на другую, чтобы выполнить работу. Это где ваш компромисс на самом деле. Вы действительно не хотите вступать в другой проект разработки библиотеки компонентов Faces, если хотите развернуть свое приложение в ближайшее время.
Мой совет - как можно больше игнорировать все гениальные вещи (интерактивная графика Javascript и т. Д.) И как можно больше кодировать свое приложение с помощью просто скучных базовых компонентов JSF. Получите его работу с наименее сложными компонентами, которые сделают эту работу. После того, как приложение заработает, вы можете вернуться и переработать слой представления (разметка Facelets), чтобы оптимизировать его для компонентов многократного использования или компонентов с более высокими функциями, таких как RichFaces, IceFaces, PrimeFaces или * Faces.