Я работал с ricfaces и JSF в течение 4-5 лет, а затем перешел на компоненты jQuery и Grails за последние 1,5 года. И вот мой взгляд на эту тему:
- В конечном итоге элементы управления JSF отображаются в виде компонентов HTML, поэтому я не вижу проблем с обновлением компонентов (если у вас вообще нет дескриптора идентификаторов, сгенерированных для элементов управления jsf, вы можете заключить элементы управления в div и затем обновить дела).
- IMHO - модалы jQuery довольно просты в использовании и более гибки, чем модальная панель RichFaces.
- Я не думаю, что это правильно, но без знания вашего варианта использования было бы трудно сказать. Я считаю, что одна вещь, которую вы потеряете, - это двустороннее связывание данных, предоставляемое компонентами jsf.
4,5,6 - благоприятствует jqGrid.
Преимущества использования JSF - поскольку ваш код на стороне сервера - JSF, вы получаете привязку данных, встроенную в ваши компоненты пользовательского интерфейса (оба пути - сервер-клиент и клиент-сервер). Другое дело, что внешний вид компонентов JSF будет соответствовать остальной части страницы. С jqGrid вам придется настроить тему.
Минусы использования JSF-rich: dataTable не очень настраиваемый и не настолько богатый по сравнению с jqGrid. Поэтому, если у вас сложный пользовательский интерфейс и вы понимаете, что определенная функция пользовательского интерфейса не поддерживается с помощью rich: dataTable, у вас нет другого выбора, кроме как использовать какой-либо другой компонент или отключить эту функцию.
Плюсы jqGrid - Богатые возможности и очень легко настраиваются. Я сделал - сетка дерева, замороженные столбцы, редактируемые столбцы, проверка клиента с помощью плагина qtip и т. Д.
Минусы jqGrid - только один способ привязки данных от сервера к клиенту. И для этого вам нужно будет написать некоторый код сервера для форматирования данных в структуру JSON перед отправкой их клиенту. Для привязки данных от клиента к серверу: вам нужно вручную отобразить параметры запроса в JSF-компонент.
Примечание: я не использовал jqGrid с бэкэндом JSF. Тем не менее, мой ответ основан на моем понимании того, как работает каждая структура.