Недоліки JSF 2.0? Чесно кажучи, окрім відносної крутої кривої навчання, коли у вас немає надійних базових знань про основні веб-розробки (HTML / CSS / JS, серверна сторона проти клієнтської сторони тощо) та базовий API сервлетів Java (запит / відповідь / сесія , переадресація / переадресація тощо), жодних серйозних недоліків не виникає на увазі. JSF у своєму нинішньому випуску все ще потребує позбавлення від негативного іміджу, який він набув у ранні віки, під час якого було кілька серйозних недоліків.
JSF 1.0 (березень 2004 р.)
Це був вихідний реліз. Це було захаращено помилками як в основній, так і в продуктивній області, про яку ви не хочете знати. Ваша веб-аплікація не завжди працює так, як ви інтуїтивно очікували. Ви, як розробник, утікали б плакати.
JSF 1.1 (травень 2004 р.)
Це був випуск помилки. Виступ все ще не сильно покращився. Був і один головний недолік: ви не можете вбудувати HTML на сторінці JSF бездоганно. Усі звичайні HTML ванілі отримують перед деревом компонентів JSF. Потрібно загортати всю звичайну ваніль у <f:verbatim>
теги, щоб вони потрапили до дерева компонентів JSF. Хоча це було відповідно до специфікації, це зазнало багато критики. Дивіться також ao JSF / Facelets: чому не годиться змішувати JSF / Facelets з тегами HTML?
JSF 1.2 (травень 2006 р.)
Це був перший випуск нової команди з розробки JSF під керівництвом Райана Любке. Нова команда зробила багато великої роботи. Були також зміни в специфікації. Основна зміна полягала в покращенні режиму подання поглядів. Це не тільки повністю відокремило JSF від JSP, тому можна було використовувати іншу технологію перегляду, ніж JSP, але це також дозволило розробникам вводити звичайний HTML ванілі на сторінку JSF без клопоту з <f:verbatim>
тегами. Ще одним основним напрямком роботи нової команди було підвищення продуктивності. Протягом життя Sun JSF Reference Implementation 1.2 (кодований під кодовою назвою Mojarra з моменту створення 1.2_08, близько 2008 р.) Практично кожна збірка отримувала (основні) поліпшення продуктивності поруч із звичайними (незначними) помилками.
Єдиним серйозним недоліком JxF 1.x (включаючи 1.2) є відсутність області між запитом та областю сеансу , так званої області розмови . Це змусило розробників клопотатись із прихованими елементами введення, непотрібними запитами БД та / або зловживати областю сеансу, коли хочеться зберегти вихідні дані моделі в наступному запиті, щоб успішно обробляти перевірки, перетворення, зміни моделі та виклики дій. складні можливості застосування. Біль можна пом'якшити, прийнявши сторонню бібліотеку, яка зберігає необхідні дані в наступному запиті, як компонент MyFaces Tomahawk <t:saveState>
, сфера розмови JBoss Seam та оркестр MyFaces рамки для розмови
Ще одним недоліком для пуристів HTML / CSS є те, що JSF використовує двокрапку :
як символ роздільника ідентифікаторів, щоб забезпечити унікальність HTML-елемента id
в створеному HTML-виведенні, особливо коли компонент повторно використовується у представленні (шаблони, ітераційні компоненти тощо). . Оскільки це неправомірний символ у ідентифікаторах CSS, вам потрібно буде скористатися \
значком, щоб уникнути двокрапки у селекторах CSS, в результаті чого вибірні або незвичайні виглядають селектори на кшталт #formId\:fieldId {}
або навіть #formId\3A fieldId {}
. Див. Також Як використовувати ідентифікований JSF HTML елемент із двокрапкою ":" у селекторах CSS? Однак, якщо ви не пурист, читайте також За замовчуванням JSF генерує непридатні ідентифікатори, несумісні з частиною css веб-стандартів .
Крім того, JSF 1.x не поставлявся з об'єктами Ajax поза коробкою. Насправді не є технічним недоліком, але через розгортку Web 2.0 у цей період він став функціональним недоліком. Exadel рано запровадив Ajax4jsf, який був ретельно розроблений протягом багатьох років і став основною частиною бібліотеки компонентів JBoss RichFaces . Інші бібліотеки компонентів були поставлені з вбудованими повноваженнями Ajax, також відомою є ICEfaces .
Приблизно на півдорозі експлуатації JSF 1.2 була представлена нова технологія перегляду на основі XML: Facelets . Це дало величезні переваги вище JSP, особливо в області шаблонування.
JSF 2.0 (червень 2009 р.)
Це був другий великий реліз, Ajax як казкове слово. Було багато технічних та функціональних змін. JSP замінюється Facelets як технологія перегляду за замовчуванням, і Facelets було розширено з можливістю створювати власні компоненти за допомогою чистого XML (так звані складові компоненти ). Дивіться також Чому фейлетки віддається перевазі JSP як мови визначення перегляду від JSF2.0 далі?
Сили Ajax були введені в аромат <f:ajax>
компонента, який має багато подібності з Ajax4jsf. Анотації та покращення конфігурації конвенцій були введені, щоб максимально знищитиfaces-config.xml
файл багатослівної роботи . Також символ роздільника ідентифікаторів контейнерів за замовчуванням :
став налаштовуватися, тому пуристисти HTML / CSS могли полегшити подих. Все , що вам потрібно зробити , це визначити його як init-param
в web.xml
з ім'ям javax.faces.SEPARATOR_CHAR
і гарантуючи , що ви не використовуєте персонажу себе в будь-якому місці клієнта ідентифікаторів, наприклад -
.
І останнє, але не менш важливе, було запроваджено нову сферу, область перегляду . Він усунув ще один головний недолік JSF 1.x, як описано раніше. Ви просто задекларуєте боб, @ViewScoped
щоб увімкнути область розмови, не намагаючись зберегти всі дані в наступних (розмовних) запитах. @ViewScoped
Квасоля буде жити до тих пір , поки ви згодом подачі і переміщення в ту ж точку зору (незалежно від відкритої вкладки браузера / вікна!), Або синхронно або асинхронно (Ajax). Дивіться також Різниця між переглядом та запитом в області керованої квасолі та Як вибрати правильну область бобів?
Хоча практично всі недоліки JSF 1.x були усунені, є специфічні помилки JSF 2.0, які можуть стати шоустоппером. @ViewScoped
Провалюється в обробниках тегів з -за проблеми з курячим яйцем в стані часткового збереження. Це зафіксовано в JSF 2.2 та підтримується в Mojarra 2.1.18. Також не підтримуються власні атрибути, такі як HTML5data-xxx
. Це зафіксовано в JSF 2.2 за допомогою нових функцій / атрибутів для найпростіших програм. Далі впровадження СФП у «Монарра» має власний набір питань . Відносно багато з них пов'язані з іноді неінтуїтивною поведінкою<ui:repeat>
, новою частковою реалізацією збереження стану та погано реалізованою областю спалаху . Більшість із них зафіксовані у версії Mojarra 2.2.x.
Приблизно у часі JSF 2.0 було представлено PrimeFaces на основі інтерфейсу jQuery та jQuery. Він став найпопулярнішою бібліотекою компонентів JSF.
JSF 2.2 (травень 2013)
З впровадженням JSF 2.2 HTML5 був використаний як мозоль, хоча це технічно просто підтримувалося у всіх старих версіях JSF. Дивіться також підтримку JavaServer Faces 2.2 та HTML5, чому XHTML все ще використовується . Найважливішою новою особливістю JSF 2.2 є підтримка спеціальних атрибутів компонентів, відкриваючи цілий світ можливостей, таких як користувацькі групи без настільних перемикачів .
Окрім помилок щодо впровадження та деяких «дратівливих дрібниць», таких як неможливість ввести EJB у валідатор / перетворювач (вже зафіксовано в JSF 2.3), в специфікації JSF 2.2 не є насправді основних недоліків.
MVC на основі компонентів проти MVC на основі запиту
Деякі можуть вирішити, що головним недоліком JSF є те, що він дозволяє дуже мало дрібно контролювати створений HTML / CSS / JS. Це не є власною JSF, це лише тому, що це MVC-основа, заснована на компонентах, а не на MVC- основі, що базується на запиті (дії) . Якщо високий ступінь контролю HTML / CSS / JS є вашою основною вимогою при розгляді MVC-рамки, тоді ви вже не повинні дивитися на компонентний MVC-фреймворк, а на базу MVC, який базується на запиті, як Spring MVC . Вам потрібно лише взяти до уваги, що вам доведеться самостійно писати всі ці кодові шаблони HTML / CSS / JS. Див. Також Різниця між запитом MVC та компонентним MVC .
Дивитися також: