Каковы принципы разработки веб-приложений с действиями Java Frameworks?

StackOverflow https://stackoverflow.com/questions/2852481

  •  27-09-2019
  •  | 
  •  

Вопрос

Фон

Я собираюсь разработать новое веб-приложение с Java. Это не очень большой или очень сложный, и у меня достаточно времени, пока он не стал «официально».

У меня есть несколько JSF / Facelets Presuction (около полугода). И у меня также есть некоторое истечение с JSP + JSTL.

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

Проблема

Чтобы исправить впечатление о рамостях на основе действий (по сравнению с JSF), я хочу быть уверенным, что я использую их правильно (в большей степени или меньшей степени).

Итак, здесь я перечислю несколько наиболее частых задач (хотя бы для меня) и опишите, как я решаю их с JSF. Я хочу знать, как они должны быть решены с помощью рамок на основе действий (или отдельно с пружинной MVC и полосами, если существует всякая разница для конкретной задачи).

  1. Рендеринг контента: Я могу применить готовый к использованию компонента из стандартных библиотек JSF (Core и HTML) или из 3-й партии (например, Richfaces). Я могу объединить простые компоненты, и я могу легко создать свои собственные компоненты, основанные на стандартных компонентах.
  2. Рендер данных (примитивные или ссылочные типы) в правильном формате: Каждый компонент позволяет указать преобразователь Для преобразования данных на обоих способах (для рендера и отправки на сервер). Конвертер, как обычно, простой класс с 2 небольшими методами.
  3. Навигация сайта: Я указываю набор навигация-кейсы в Faces-config.xml. Затем я указываю атрибут действия ссылки (или кнопки или кнопки), которая должна соответствовать одному или нескольким случаям навигации. Лучший матч выбран JSF.
  4. Реализация потока (например, Multiform Wizards): Я использую JSF 1.2, поэтому я использую Apache Orchestra Для потока (разговора) объем.
  5. Обработка формы: У меня довольно стандартная Java-Bean (Beeding Bean в Условиях JSF) с некоторой объем. Я формирую полей формы на этом свойствах компонатов. Если все идет хорошо (исключения и проверка не передаются), то все эти свойства устанавливаются со значениями из полей формы. Тогда я могу назвать один метод (указан в кнопке действие Атрибут) Для выполнения некоторой логики и возврата строки, которая должна многое из моих навигационных случаев, чтобы перейти на следующий экран.
  6. Валидация форм: Я могу создать пользовательский валидатор (или выбрать из существующих) и добавить его почти на каждый компонент. 3-й партийные библиотеки имеют наборы пользовательских аякс-валидаторов. Стандартные валидаторы работают только после отправки страницы. На самом деле, мне не нравится, насколько валикция в JSF работает. Слишком много магии там. Многие стандартные компоненты (или, может быть, все они) имеют предварительно определенную проверку, и это невозможно отключить его (возможно, не всегда, но я встречал много проблем с этим).
  7. AJAX Поддержка: Многие 3-й партийные библиотеки (MyFaces, Icefaces, Openfaces, OnlyPrefixfaces ...) имеют сильную поддержку Ajax, и она работает довольно хорошо. Пока вы не встретите проблему. Слишком много магии, а также. Это очень сложно сделать это работать, если она не работает, но вы сделали правильно, так как он описан в руководстве.
  8. Удобные URL-адреса: люди говорят Что существуют некоторые библиотеки для этого. И это можно сделать с фильтрами также. Но я никогда не пробовал. Кажется, слишком сложный для первого взгляда.

Заранее спасибо за пояснение того, как эти предметы (или некоторые из них) могут быть сделаны с помощью действий.

Это было полезно?

Решение

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

Мы тесно знакомы с полосами, используйте его для большинства всего сейчас, и действительно наслаждайтесь этим. Легко впрысковать, поддерживает многие сложные сценарии, но вы также можете работать за пределами этого, что действительно важно, когда вы хотите создать свои собственные виджеты AJAX или поговорить с другой системой или что-то в этом роде.

Если вы идете на полосы маршрута, я определенно рекомендую покупать или скачать книга. Отказ Это одна остановка для всего, что вам нужно для полос, и практически является единственной документацией для Stringersist (действительно хорошая особенность, но нет веб-документов).


Содержание рендеринга: я могу применить готовый к использованию компонента из стандартных библиотек JSF (CORE и HTML) или из 3-го вечеринок (например, Richfaces). Я могу объединить простые компоненты, и я могу легко создать свои собственные компоненты, основанные на стандартных компонентах.

Это похоже. Core, HTML, FMT и т. Д., а также любые пользовательские теги, которые вы находите, INC. Дисплей: тег, пакет теги и создайте свой собственный. Однако, очевидно, вы не имеете дело с уровнем компонента сейчас, вы имеете дело с тегом, который определяет, что находится на странице / отправлено на или с сервера.

Дедавые данные (примитивные или ссылочные типы) в правильном формате: каждый компонент позволяет указывать преобразователь для преобразования данных в обоих способах (для рендеринга и отправки на сервер). Конвертер, как обычно, простой класс с 2 небольшими методами.

Полосы имеют много встроенные преобразователи, и легко создавать пользовательские преобразователи для ваших более сложных типов данных. Полосы поддерживают очень сложные структуры данных, которые следует сопоставлять с небольшим количеством хлопот. В сочетании с Стриптист, Например, я могу поставить свой объект модели непосредственно на ActionBean, поставить несколько полей в форме, и Stripersist увлажняет модель из БД (на основе его PK) и обновляет, что с полями, которые я надену на Форма - все, прежде чем высвобождать контроль для меня на действии.

Навигация сайта: я указываю набор навигационных случаев на FaceS-config.xml. Затем я указываю атрибут действия ссылки (или кнопки или кнопки), которая должна соответствовать одному или нескольким случаям навигации. Лучший матч выбран JSF.

Навигация в полосках основана на том, что вы называете ActionBeans, изначально. Там нет XML. Кроме того, Красивые URL-адреса являются аннотацией на уровне действий в полосах 1,5, так что вы можете сделать такие вещи, как @UrlBinding("/{$event}/{model}") куда /view/5 доставит вас к "view«Обработчик событий для вашего объекта модели с ID / PK 5.

Реализация потока (например, из мультиформных волшебников): я использую JSF 1.2, поэтому я использую оркестр Apache для поезда (разговора).

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

Обработка формы: у меня довольно стандартная Java-Bean (Beeding Bean в JSF-термины) с некоторым объемом. Я формирую полей формы на этом свойствах компонатов. Если все идет хорошо (исключения и проверка не передаются), то все эти свойства устанавливаются со значениями из полей формы. Тогда я могу назвать один метод (указанный в атрибуте действий кнопки), чтобы выполнить некоторую логику и вернуть строку, которая должна многое из моих навигационных чехлов для перехода на следующий экран.

Не резко отличается. Вместо компонентов в вашем [Action] Bean у вас сейчас есть Java или пользовательские типы. ActionBeans создаются за запрос и выброшены, если вы не делаете что-то вроде положить его в сеанс или волшебник или что-то еще. Это приятно, потому что все переменные экземпляра сопоставлены на данные из формы, вы его используете, а затем выбросьте его, и не нужно иметь дело с любыми проблемами синхронизации, такими как Struts. После того, как вы сделаете свою вещь с данными, полосы позволяют отправлять FlowerSolution (OK Status), Redirect или Treaking (JSON, File, Etc). Шаблон перенаправления-последующего поста реализован с идеей Область вспышки (3/4 вниз по странице).

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

Полосы позволяют валидацию в аннотациях на переменных экземпляра на ActionBean. Они позволяют некоторые значения по умолчанию, требуются, максимум и т. Д. Или вы всегда можете создавать свои собственные. По умолчанию легко добавлять и гибко, пока всегда есть возможность сделать что-то полностью настроенное.

AJAX Поддержка: Многие 3-й партийные библиотеки (MyFaces, Icefaces, Openfaces, OnlyPrefixfaces ...) имеют сильную поддержку Ajax, и она работает довольно хорошо. Пока вы не встретите проблему. Слишком много магии, а также. Это очень сложно сделать это работать, если она не работает, но вы сделали правильно, так как он описан в руководстве.

Это была моя большая проблема с точкой JSF поступления. Даже если вы получили виджет справа, вы все еще застряли с этим виджетом. С полосами, вы можете использовать любой новейший и лучший jQuery, который должен предложить, и до тех пор, пока вы отправляете правильное Get или Post на сервер, полосы знают, что делать с ним и легко отправлять JSON обратно. Я думаю, что каркасы компонентов соответствуют нише несколько лет назад намного лучше, когда Ajax был сложен, но JQ делает его так легко.

Удобные URL-адреса: Люди говорят, что есть некоторые библиотеки для этого. И это может быть сделано с фильтрами. Но я никогда не пробовал. Кажется, слишком сложный для первого взгляда.

@Urlbinding., это так просто, как это.

Другие советы

Мой ответ не тот, который вы хотите услышать: не переключаться с компонента Framework на Framework

Я переключил наоборот после многих лет развития рамок действий, и я никогда не возвращаюсь.

Из 8 используемых случаев, которые вы упомянули, только один приходит на ум, где рамоты действия, очевидно, лучше, и это дизайн URL / дружественные URL. Также можно сделать в компонентных рамках, но гораздо проще в рамках действий (особенно в полосках, где вы просто аннотируете свой эффект боевики с URL).

Я бы посоветовал вам попробовать Wikele, очень легко учиться (намного проще, чем JSF), и оно давайте повторно используйте много существующих компонентов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top