Что нужно для JSF, когда пользовательский интерфейс может быть реализован с помощью библиотек JavaScript, таких как jQuery и AngularJS

105

Я читал о JSF о своей структуре пользовательского интерфейса и предоставляет некоторые компоненты пользовательского интерфейса. Но как это лучше или отличается от количества компонентов, которые могут быть доступны из Ext JS или jQuery или комбинации CSS и HTML и JavaScript.

Почему кто-то учит JSF?

  • 3
    Преимущества сгенерированного сервером html: поиск в поисковых системах, скрытие просмотров на основе авторизации. в противном случае мы отказались от него за чистый интерфейс ajax.
  • 4
    Я также отказался от JSF в пользу AngularJS + RESTful backend. (Яблоки и апельсины, но Angular такой хороший, что мне не нужно много преимуществ JSF)
Показать ещё 1 комментарий
Теги:
extjs
jsf

8 ответов

133
Лучший ответ

JSF для простого JSP/Servlet/HTML/CSS/JS похож на jQuery на простой JS: делать больше с меньшим количеством кода. Чтобы взять PrimeFaces в качестве примера, просмотрите его showcase, чтобы увидеть примеры кода. RichFaces также имеет showcase с полный пример кода. Если вы внимательно изучите эти примеры, то увидите, что вам в основном нужен простой класс Javabean как модель и XHTML файл в виде представления.

Обратите внимание: вы не должны видеть JSF в качестве замены одного HTML/CSS/JS, вы также должны учитывать часть сервера (в частности: JSP/Servlet). JSF устраняет необходимость всех шаблонов сбора параметров HTTP-запроса, их преобразования/проверки, обновления значений модели, выполнения правильного Java-метода для создания бизнес-материала и создания шаблона HTML/CSS/JS. С JSF вы в основном получаете страницу XHTML как определение определения и класс Javabean как определение модели. Это значительно ускоряет разработку.

Как и в случае с любой инфраструктурой MVC на основе компонентов на основе, у вас в JSF меньше мелкозернистого управления обработанным HTML/CSS/JS. Добавление пользовательского JS-кода не так просто, как вам нужно учитывать также состояние просмотра JSF на стороне сервера (например, включение отключенной кнопки на стороне JS не будет включать кнопку со стороны JSF, которая, в свою очередь, огромное преимущество в плане безопасности). Если это, однако, крупный showstopper, то скорее посмотрите на основанную на действии веб-структуру MVC, например Spring MVC. Вы только учтете, что вам нужно написать весь этот код HTML/CSS/JS самостоятельно. Также, если вы вернетесь из Facelets в JSP, вы также пропустите дополнительные возможности шаблонов.

С другой стороны, если у вас большой веб-сайт JSP/Servlet/HTML/CSS/JS/jQuery, и вы хотите реорганизовать повторяющийся JSP/сервлет/HTML/CSS/JS/jQuery шаблонный код в многоразовый компонентов, то одним из решений будет JSF. Пользовательские шаблоны, файлы тегов и компоненты могут помочь в этом. В этой перспективе JSF стоит выше JSP/Servlet/HTML/CSS/JS/jQuery (а также почему очень важно понять эти основы перед погружением в JSF).

Здесь вы можете найти проект JSF, основанный на реальном мире: Java EE Kickoff App. Вы увидите, что он содержит рядом с JSF как хороший HTML5, CSS3 и jQuery.

См. также:

  • 14
    Делать больше с меньшим количеством кода? Но с большим количеством XML ... что компромисс ... кроме того, это лишает вас гибкости
  • 33
    В JSF 2.0+ xml не требуется.
Показать ещё 3 комментария
24

JSF был создан для того, чтобы в java-магазинах не было необходимости изучать такие вещи, как jQuery и buil complex js, но вместо этого сосредоточиться на чисто стеке Java. В мире, где время - это деньги и много мест, которые уже сосредоточены на разработке Java, один менее язык/часть в стеке обучает и поддерживает быстрее и, следовательно, дешевле.

Я добавлю, что JavaScript легко стать кошмаром обслуживания на больших командах, особенно если некоторые из разработчиков проекта не очень популярны.

  • 0
    Так что, если я достаточно доволен JQuery JS и т. Д., Мне не нужно концентрироваться на JSF?
  • 2
    Все зависит от проблемы, которую вы пытаетесь решить, и с какой командой вы ее решаете.
Показать ещё 5 комментариев
19

С Javascript и фреймворками, такими как jQuery, у вас есть полная гибкость и полный контроль. Wwith ext и т.д. Вы теряете много контроля и должны адаптироваться к структуре. С JSF вы полностью теряете контроль и должны полностью адаптироваться к структуре. Вы вызывается в жизненных циклах и т.д., И, наконец, вы не можете контролировать, когда вызов на сервер можно сделать, а где нет. Если вы хотите что-то считать "особенным", вы находитесь в очень трудном положении. И в мире JSF даже такие основные вещи, как сортировка многоколоночной таблицы или поля, где вы можете вводить только ограниченный набор символов (например, числовое поле), считаются "специальными".

Однако, чем больше у вас гибкости, тем больше ошибок или неправильных действий вы можете сделать. Высокая гибкость работает только с очень умными программистами, другие превратят проект в неуправляемый кошмар.

Но с JSF и его ограниченной гибкостью всегда есть только несколько (или даже один) правильный способ сделать что-то. Вы очень ограничены, вы не можете создавать ярлыки, вы должны писать больше XML и т.д. - но при адаптации к стандарту лучше контролировать код, который создадут неопытные или низкоквалифицированные программисты. В результате крупные корпорации любят JSF, потому что это "безопаснее" для них.

Когда я перешел из GWT в JSF, я был потрясен, сколько вещей, что было для меня естественным, считалось крайне нетипичным и насколько простые вещи были настолько трудными для достижения. Что еще, даже внесение самых маленьких изменений, таких как добавление знака ":" после метки, которое в приложении GWT/jQuery для работы сменит одну функцию, генерирующую ярлык, потребовало изменения десятков файлов с локализованными свойствами, что даже не рассматривалось кто-нибудь, кроме меня странно...

  • 6
    PrimeFaces основан на jQuery, поэтому у вас есть большая гибкость на стороне клиента, также компоненты PrimeFaces предоставляют множество хуков на стороне клиента и сервера в качестве обратных вызовов событий для настройки. Javascript APIs могут быть переопределены и CSS, а также для индивидуального оформления. : label может быть настроен глобально в web.xml для более дружественного к jQuery персонажа.
  • 0
    Согласовано. Общее правило таково: использование никакой инфраструктуры не требует расширенного программирования на javascript, и его будет сложно поддерживать, но оно позволяет значительно увеличить мощность и сложность, в то время как зависимость от структур будет легче создавать и поддерживать, но ограничит потенциальную емкость приложения.
7

Преимущества использования JSF заключаются не только в создании xhtml + css + js. Иногда JSF накладывает ограничение на разметку, которую вы можете генерировать, например, на любой основе на основе компонентов. Но JSF не только для этого, его lifecyle помогает отлично. После проверки ввода он может обновить модель и синхронизировать серверную сторону beans без каких-либо усилий. вы просто говорите "независимо от того, какой тип пользователя здесь, проверьте, если это число, если да, то сохраните его в свойстве YY в объекте XX", и JSF сделает все это.

Итак, вы можете использовать JQuery, JS и т.д. Но JSF предоставляет много преимуществ, когда дело доходит до написания кода на стороне сервера и избавляет вас от большого количества плиты котла.

6

Я категорически не согласен с тем, что jsf добавляет что-либо. Это только увеличивает накладные расходы. Выполнение ui на сервере - самая смешная вещь, которую когда-либо слышали. И javascript на больших командах отлично работает - это называется повторным использованием кода.

Просто оберните jquery в некоторые теги jsp, вот и все, что вам нужно, и вы сделали это, и не переносите проблемы .sackles и масштабируемости с .jsf и richfaces.

  • 13
    JSF ориентирован на приложения на основе форм. jQuery хорош (черт возьми, многие популярные библиотеки JSF-компонентов, такие как PrimeFaces, RichFaces и IceFaces, даже используют его под прикрытием), но jQuery никоим образом не упрощает обработку форм, отправляемых на стороне сервера. Использование простого JSP / Servlet приведет только к ужасному шаблону кода. Опять же, JSF - это не только HTML / CSS / JS, но и JSP / Servlet.
  • 2
    Я думаю, что если вы будете читать больше о JSF в целом и о жизненном цикле страницы JSF конкретно, вы можете изменить свое решение. Опять же, вы не можете.
5

Работая с JSF, Spring MVC, Struts, Grails, JQuery и ExtJS, я считаю, что Grails + ExtJS - одна из мощных комбинаций.

Я бы выбрал Grails над JSF в любой день. Мне нравится полнота ExtJS как основы и библиотеки клиентской стороны, но она имеет более крутую кривую обучения, чем JQuery.

2

Вот самые большие различия между jQuery и JSF:

  • нет архитектуры MVC
  • отсутствие контроля состояния (сохранение даты в сеансе или разговора, автоматическая очистка и т.д.)
  • нет (по умолчанию) библиотека проверки
  • нет библиотеки шаблонов
  • нет продвинутой навигации/маршрутизации
  • клиентская сторона

jQuery никогда не предназначался для использования в качестве полной веб-страницы стека. Он был больше предназначен для замены низкоуровневого JS-кода, так что запись JS становится проще и мощнее в меньших строках кода.

И в основном это должно быть использовано для добавления поведения в HTML-элементы.

1

Используя инфраструктуру ExtJS для большого веб-приложения, я знаю, как легко ее использовать. ExtJS (Schena) лучше всего подходит для взаимодействия с базами данных Oracle (Oracle 11g) в архитектуре MVC. Представление предназначалось для визуальных/пользовательских взаимодействий. Контроллер указал "обработку" и триггеры, которые необходимо использовать, из пакетов PLSQL (API для запросов CRUD, SQL select и т.д.). Модель и файлы хранилища использовались для "отображения" элементов данных в Viewer/input.

ExtJS не подходит для веб-интерфейсов, не связанных с базой данных - где Angular JS может быть лучше подходит.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню