Почему Facelets предпочтительнее, чем JSP, как язык определения представления, начиная с JSF2.0?

Я вижу, что начиная с JSF2.0 и далее язык определения представлений Facelets является предпочтительным языком определения представлений, а не JSP, который устарел из-за устаревшего отступления. Я хочу понять, почему Facelets предпочтительнее, чем JSP, как язык определения представления, начиная с JSF2.0? Я знаю, что у JSP также есть шаблонное поведение, которое является основной движущей силой для принятия Facelets.

П.С .: Я прошелэта почта на stackoverflow, но я не думаю, что это отвечает на мой вопрос. Следовательно, отправив это как отдельный вопрос.

 Koray Tugay21 июл. 2016 г., 20:25

Ответы на вопрос(2)

Решение Вопроса

Правда, JSP имеетнесколько шаблонный возможностей, но самым большим недостатком использования JSP в JSF является то, что JSP пишет в ответ, как только он встречает текстовое содержимое шаблона, в то время как JSF хотел бы выполнить некоторую предварительную / последующую обработку с ним. В JSF 1.0 / 1.1 следующий код JSF

<h:outputText value="first"> second <h:outputText value="third"> fourth

будет производить

второй четвертый первый третий

Это было во времена JSF 1.0 / 1.1Головная боль, Разработчики должны будут обернуть текст шаблона какsecond а такжеfourth в приведенном выше примере в<f:verbatim> теги по всему месту. JSF 1.2 решил эту проблему с помощью улучшенного обработчика представления, который анализирует JSP вместо того, чтобы выполнять его, но это было под капотом, все еще очень неуклюжим, поскольку синтаксис JSP не "правильно сформирован", как XML. Настоятельно желательна технология представления на основе XML, чтобы можно было использовать эффективный синтаксический анализатор на основе SAX. И Facelets родился (среди "JSFT примеров" Кена Полсена).

Также унифицированный EL#{} не может быть использован в тексте шаблона JSP, что приводит к уродливым - и для началанеинтуитивными- смешивание${} а также#{}, Кроме того, JSTL в JSF 1.x на JSP нельзя использовать какпросмотреть метки времени сборки, Кроме того, синтаксис JSP с<% %> дело старое, и возможность встраивания необработанного кода Java в JSP считаетсяочень плохая практика который ломаетсяMVC идеология.

В целом, с точки зрения JSF / MVC, JSP просто безобразен и ужасен, а Facelets просто чист и обалден.

 kolossus27 окт. 2012 г., 04:51
+1, вот к фейслетам!
 BalusC27 окт. 2012 г., 05:47
Только в тегах JSP. Не в тексте шаблона. Например.<p>#{user.name}</p> не работает в JSP.${} форма делает.
 Geek27 окт. 2012 г., 05:32
@BalusC "унифицированный EL # {} нельзя использовать в тексте шаблона JSP". JSP2.1 поддерживает унифицированный EL. Не так ли?

JSFToolbox документация глава 3:

Затраты времени компиляции JSP

Каждый раз, когда вы редактируете, сохраняете и перезагружаете страницу JSP, серверный JSP-компилятор генерирует код сервлета Java и компилирует его в сервлет. Это называется процессом перевода JSP, и обычно он стоит от 1-2 секунд в зависимости от производительности сервера.

Компиляция Facelets XML

В отличие от страниц JavaServer, страницы Facelets не компилируются в сервлеты. Поскольку страницы Facelets совместимы с XML, платформа Facelets использует быстрый компилятор на основе SAX для построения ваших представлений. Кроме того, Facelets могут быть настроены для немедленного обнаружения и визуализации изменений на ваших страницах, ускоряя цикл разработки JSF.

Книга "Компоненты JSF 1.2" от Яна Хлаватса, страница 49:

Во время разработки приложений JSF мы часто вносим изменения в наши страницы JSF, что приводит к частой перекомпиляции наших страниц JSP, и это может привести к дополнительным затратам времени компиляции.

Страницы Facelets - это простые XML-документы (страницы XHTMl), которые никогда не компилируются в сервлеты, а используют процесс компиляции на основе SAX, который создает дерево компонентов пользовательского интерфейса для наших представлений. Следовательно, Facelets быстрее по сравнению с JSP, поскольку он свободен от затрат на трансляцию JSP.

Ваш ответ на вопрос