JSF против простого JSP + Beans?

У меня есть возможность сделать свой следующий проект либо в JSF, либо в JSP. Другие языки/фреймворки не подходят.

Я не хочу использовать какие-либо библиотеки визуальных компонентов, такие как RichFaces, IceFaces и т. д., потому что в прошлом у меня был очень плохой опыт работы с ними, поэтому я выберу jQuery. компоненты, чтобы они делали точно то, что я хочу.

Точно так же я не буду возиться с компонентами доступа к данным.

Более того, поскольку JSF имеет множество ограничений по сравнению с JSP (например, отсутствие поддержки GET, невозможность избежать сохранения состояния и т. д.), я рассматриваю возможность полного перехода на JSP+Beans.

Есть ли что-то еще, чего мне не хватает в JSF?


person Kay Pale    schedule 12.01.2011    source источник
comment
Да, вы пропустили выпуск JSF 2.0. Связанный: Каковы основные недостатки JSF 2.0 Поскольку вы, кажется, больше ориентированы на jQuery, лучше используйте структуру MVC на основе запросов, а не структуру MVC на основе компонентов. Связано: Зачем нужен JSF, если пользовательский интерфейс можно создать с помощью jQuery?   -  person BalusC    schedule 12.01.2011
comment
Я бы пошел с простыми старыми сервлетами + JSP. С JSF все довольно легко выходит из-под вашего контроля. Ненавижу это. Не ставлю это как ответ, так как это субъективно и спорно. :-)   -  person Pablo Santa Cruz    schedule 12.01.2011


Ответы (1)


Ограничений, о которых вы говорите, на самом деле нет. JSF полностью поддерживает GET. На самом деле он всегда поддерживал это, хотя и с некоторыми ограничениями. Что вы сделали, так это внедрили #{param.some_id} в свой bean-компонент и предприняли некоторые действия в аннотированном методе @PostContruct.

В JSF 2.0 эта поддержка была значительно расширена, и вы можете подключать к ним стандартные валидаторы и преобразователи, чего нельзя было сделать в JSF 1.x.

Преимуществ у JSF много, но одна вещь, которую я упустил при разработке на простом JSP, — это доступная библиотека преобразователей и валидаторов. Независимо от того, какой веб-разработкой вы занимаетесь, и неважно, насколько причудлив ваш клиентский код, в конечном итоге на сервере должна быть выполнена какая-то операция, а затем вы должны выполнить преобразование и проверку.

С помощью JSF вы можете легко создать собственную библиотеку этих преобразователей и валидаторов или выбрать один из множества уже доступных. С проверкой bean-компонентов (Java EE 6) это можно вывести на следующий уровень: аннотируйте свои объекты ограничениями, и JSF применит их для вас в пользовательском интерфейсе. (обратите внимание, что сам JSF не содержит проверки бина, но поддерживает ее).

Затем я также обнаружил, что наличие простого, но эффективного языка шаблонов может быть очень полезным. Даже если вы используете только несколько компонентов JSF или, возможно, вообще не используете их, вы можете создавать страницы мастер-шаблонов, иметь клиенты шаблонов и помещать свой javascript и HTML на основе jQuery в фрагменты, которые вы можете легко повторно использовать на стороне сервера. JSP действительно имеет только jsp:include для шаблонов, что довольно ограничивает.

Еще одна небольшая удобная вещь с JSF заключается в том, что у вас есть простой программный доступ к объектам запроса и ответа, соответствующим текущему запросу. Если вы не используете преимущества многих основных функций JSF, то при программировании в стиле JSP/Servlet это может быть небольшим преимуществом.

Но, как уже указывал BalusC, возможно, JSF не для вас. Наибольшая выгода при использовании фреймворка для его компонентов. Если вы не планируете их использовать, некоторые запросы могут подойти вам лучше.

person Arjan Tijms    schedule 12.01.2011
comment
GET действительно стал возможен в версии 2.0, а в версии 1.x это был ужасный хак. Существует несколько библиотек для проверки пользовательского ввода - это не JSF :) То же самое для конвертеров! Единственная разница между заманчивостью, которую вы можете сделать с помощью простого JSP и JSF, заключается в том, что в последнем случае он больше похож на синтаксис XML, а на ранней стадии разработки он мог более эффективно поддерживать редактор WYSIWYG. Опять же, есть много механизмов шаблонов, которые можно использовать с JSP, если хотите, например. Скорость. Наконец, доступ к объекту запроса и ответа одинаково прост в сервлетах, JSP, JSF и т. д. - person Kay Pale; 13.01.2011
comment
По умолчанию в сервлетах вы должны передавать эти два объекта. Конечно, вы можете создать фильтр сервлета, который сохраняет их в переменной TLS, а затем в предложении finally снова удаляет их. Ничего страшного. Просто хотел упомянуть, что в JSF это уже сделано. Это небольшая вещь (очень маленькая), но вопрос заключался в том, какие преимущества JSF все еще имел, когда (на самом деле) не использовал компоненты. - person Arjan Tijms; 14.01.2011
comment
Опять же, существует множество механизмов шаблонов, которые можно использовать с JSP, например. Velocity. Но тогда вы на самом деле не используете обычный JSP. Тогда вы используете Velocity, и вопрос должен заключаться в том, JSF или Velocity, верно? В некотором смысле JSF также является механизмом шаблонов (необязательно), который можно использовать с JSP... - person Arjan Tijms; 14.01.2011