Я - разработчик внешнего интерфейса, и я часто нахожусь на уровне представления jsp и видел немало решений, позволяющих подтолкнуть данные (модель) в представление. Недавно я наткнулся на решение taglib, которое вытягивает данные в jsp, что мне кажется более естественным и разумным.
Первая проблема
Учитывая одну страницу и рассматривая ее как отдельную сущность, MVC имеет абсолютный смысл, однако одна страница может быть довольно сложной и, скорее всего, повторно использует компоненты / службы, которые используются на других страницах. В результате контроллер также становится довольно сложным.
По моему опыту, страница также изменчива, так как клиенты любят менять функциональность или выворачивать весь сайт наизнанку при следующем "редизайне". Это обычно приводит к довольно утомительному проекту рефакторинга, где буквально ВСЕ нужно переписать.
Тогда возникает проблема согласованности: на одной странице набор данных помещается в ModelView как «список», а на другой странице, где «список» может быть абстрагирован, он помещается в ModelView как «specificList». Поддержание согласованности в течение жизненного цикла проекта становится утомительной повседневной задачей, и ее обычно избегают, но это именно то, что происходит с чистым решением MVC.
Решение
Итак, в недавнем проекте, который я унаследовал, я видел два решения, которые переносят данные в PageView. Первое довольно уродливо при использовании jsp: include для вызова страницы jsp и запуска другого контроллера.
Второе, что я нашел довольно элегантным, они использовали taglib для перетаскивания определенных наборов данных в просмотр страницы. Taglib был задокументирован внутри TLD, и его было приятно использовать. Внезапно я смог повторно использовать данные на множестве страниц, не связываясь с контроллерами.
Так что в этом проекте мне пришлось реализовать «редизайн», и все решения по извлечению данных значительно облегчили мою работу, однако в тех местах, где они использовали внедрение данных (MVC), это было больно в задницу (я я не разработчик Java) и разработчики Java, чтобы помочь, где немногие, чтобы ничего.
Кроме того, теговые библиотеки при правильном написании могут быть однократными только для записи, тогда как использование инъекции данных (MVC) может стать ребенком, о котором вам постоянно нужно заботиться (помимо jsp).
Пример Taglib
Допустим, у нас есть файл services.tld со следующими определениями / реализациями тегов.
- getEmployeeAddress
- getEmployees
<services:getEmployees filter="a">
<!-- loop, get addresses, otherwise if empty list, render nothing -->
</services:getEmployees>
Это позволяет мне (фронтмену) отображать сотрудников и их адреса практически на любой странице, освобождает разработчика Java для более важных задач. Служба может тестироваться отдельно от контроллера pageView, контроллер pageView становится намного менее сложным (скажем, например, обрабатывать только аутентификацию и функциональность всего сайта), а жизнь (по крайней мере, мне) кажется намного веселее.
Мой вопрос
Multipart на самом деле:
1.) Это дерьмо моего рассуждения и если да, то почему и с какой точки зрения? = Р
2.) Есть ли лучшие альтернативы? (Я также использовал плитки, например).
3.) Используете ли вы вышеупомянутое решение taglib и как вы к этому относитесь?
4.) Какова цена / выгода / риск вышеупомянутого решения taglib с точки зрения разработчика Java?
Я понимаю, почему MVC делает это простым для разработчиков Java, но по моему опыту (sofar) он просто переносит трудности на уровень jsp, как будто мне иногда нужно изучить отдельный API для каждой страницы ... Да, и я Как веб-разработчик, я признаю, что получение данных становится более естественным для меня, используя Ajax, и вся эта шумиха, поскольку все данные, доступные при загрузке страницы, являются анти-паттерном в моей области ...