Ограничений, о которых вы говорите, на самом деле нет. JSF полностью поддерживает GET. Фактически он всегда это поддерживал, хотя и с некоторыми ограничениями. То, что вы сделали, это вставили # {param.some_id} в ваш bean-компонент и предприняли некоторые действия с помощью аннотированного метода @PostContruct.
В JSF 2.0 эта поддержка была значительно расширена, и вы можете присоединить к ним стандартные валидаторы и преобразователи, чего вы не могли сделать в JSF 1.x.
Преимущества JSF многочисленны, но я упустил одну особую вещь, делая простую разработку JSP, - наличие библиотеки конвертеров и валидаторов. Независимо от того, какой веб-разработкой вы занимаетесь, и неважно, насколько хорош ваш клиентский код, в конечном итоге на сервере необходимо выполнить какую-то операцию, а затем выполнить преобразование и проверку.
С помощью JSF вы можете легко создать свою собственную библиотеку из этих преобразователей и валидаторов или выбрать из множества доступных. С помощью валидации бина (Java EE 6) это можно перевести на следующий уровень: аннотируйте свои сущности с помощью ограничений, и JSF будет применять их для вас в пользовательском интерфейсе. (обратите внимание, что сам JSF не содержит проверки бина, но поддерживает его).
Тогда я также обнаружил, что простой, но эффективный язык шаблонов может быть очень полезным. Даже если вы используете только несколько компонентов JSF или вообще не используете их, вы можете создавать главные страницы шаблонов, иметь клиенты шаблонов и размещать свой javascript и HTML на основе jQuery в виде кусков, которые можно легко использовать на стороне сервера. JSP действительно имеет только jsp: include для шаблонов, что довольно ограниченно.
Еще одна небольшая удобная вещь с JSF заключается в том, что у вас есть простой программный доступ к объектам запроса и ответа, соответствующим текущему запросу. Если вы не пользуетесь многими основными функциями JSF, то в программировании в стиле JSP / Servlet это может быть небольшим преимуществом.
Но, как уже указывал BalusC, возможно, JSF не для вас. Наибольшим преимуществом является использование фреймворка для его компонентов. Если вы не планируете использовать их, некоторые запросы на основе могут подойти вам лучше.