Вопрос по java, jsf – Понимание JSF как основы MVC

50

Я читаю на JSF и чувствую себя довольно смущенным, почему JSF - это инфраструктура MVC (или, по крайней мере, какие части принадлежат какой «букве»).

Я посмотрел на этот вопрос:Какие компоненты являются MVC в рамках JSF MVC?

Я прочел там, если вы не смотрите на это в агрегированном представлении, модель - это ваша сущность, представление - это ваш код XHTML, а контроллер - управляемый компонент. Хм ... Хорошо, но разве представление не очень часто зависит от выполнения дальнейших вызовов бизнес-логики, которые, например, возвращают набор объектов, соответствует ли описание?

Одна книга, которую я прочитал, описала это как управляемые компоненты - это своего рода «сообщение». Конвертер, который используется сервлетом Faces (контроллером) для вызова бизнес-уровня (модели), а затем код XHTML является представлением.

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

Ваш Ответ

4   ответа
2

Но главный вопрос для путаницы возникает из-за того, что я смешал компоненты mvc & apos; определения, исходящие из фреймворка, здесь JSF, с теми компонентами модели и контроллера, которые вы определили в своем проекте приложения:

Предположим, вы перешли с JSF на любую другую инфраструктуру веб-интерфейса в вашем бизнес-приложении: У вас все еще будет «бизнес-модель» и «бизнес-контроллер». (В наших проектах мы просто называем эти компоненты «моделью» и «процессом».)

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

7

Model: Anything you use for persistence (Hibernate, JPA, etc) and data modeling (Java Beans). View: xhtml, jsp, etc. Controller: Mananaged Beans.

JSF дает вам возможность контролировать ваши запросы / ответы. То, как вы создаете модель / вид, не связано напрямую с концепцией MVC. Это просто вопрос выбора. Концепция MVC связана с организацией кода.

Аналогично Struts - это инфраструктура MVC, но она работает в основном как контроллер.

Я думаю, что помогу вам лучше прояснить вашу идею.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededen.wikipedia.org/wiki/JavaBean/index.htmlError: User Rate Limit Exceededdocs.oracle.com/javaee/6/tutorial/doc/gjaam.html#gjacb
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
6

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

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

Model - contains the domain model, in most cases represents the tables in the database, persisted through DAOs.

View - the ui components, connected to the bean;

Controller - the managed bean that contains the business logic and handles communication between the view and the model.

Я думаю, что некоторые люди путают MVC посреднического контроллера с простым MVC, что приводит к различным встречающимся объяснениям.

98

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

В настольном приложении узлы M, V и C представляют собой максимально связанный граф, то есть каждая часть может взаимодействовать с любой другой частью. Например. если модель изменяется, она может перенести это изменение в представление. Это особенно заметно в случае, когда в настольном приложении есть несколько представлений представления. Измените одно и посмотрите другое обновление в режиме реального времени.

Из-за природы веб-приложений клиент / сервер и запросов / ответов классический MVC не отображает 1: 1 на большинство веб-фреймворков.

В частности, в JSF отображение выглядит следующим образом:

Model - The Services/DAOs plus the entities they produce and consume. The entry point to this is the managed bean, but in Java EE (of which JSF is a part) these artifacts are typically implemented by EJB and JPA respectively. View - The UI components and their composition into a full page. This is fully in the domain of JSF and implemented by JSF UIComponents and Facelets respectively. Controller - The traffic cop that handles commands and incoming data from the user, routes this to the right parts and selects a view for display. In JSF one doesn't write this controller, but it's already provided by the framework (it's the FacesServlet).

Особенно последняя часть часто не совсем понятна: в JSF вы не реализуете контроллер. Следовательно, поддерживающий компонент или любой другой вид управляемого компонентаNOT контроллер.

Первая часть (модель) тоже не всегда четко понятна. Бизнес-логика может быть реализована EJB и JPA, но с точки зрения JSF все, на что ссылается привязка значения, является моделью. Отсюда и название одного из этапов жизненного цикла JSF:Update Model, На этом этапе JSF передает данные из компонентов пользовательского интерфейса в модель. В этом смысле (JSF) управляемые bean-компоненты являются, таким образом, моделью.

Хотя сам JSF явно не определяет концепцию, часто существует повторяющееся и конкретное использование управляемых bean-компонентов, называемыхbacking bean.

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

Смотрите также:

What are the main advantages of MVC pattern over the old fashioned 3-layer pattern MVC-Architecture of JavaServer Faces (Chapter 4.3)
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededsts.tu-harburg.de/pw-and-m-theses/2007/maab07.pdf
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded

Похожие вопросы