No framework JSF MVC, quem é Model, View e Controller?
fonte
No framework JSF MVC, quem é Model, View e Controller?
Isso depende do ponto de vista (trocadilho intencional).
No quadro geral da arquitetura, seu próprio código JSF é o V :
M - Domínio comercial / camada de serviço (por exemplo, EJB / JPA / DAO)
V - Seu código JSF
C - FacesServlet
Na imagem do desenvolvedor, o V arquitetônico é, por sua vez, divisível como abaixo:
M - Entidade
V - Facelets / JSP página
C - Bean gerenciado
Na imagem menor do cliente, o desenvolvedor V pode ser dividido conforme abaixo:
M - Árvore de componentes JSF
V - Saída HTML renderizada
C - Cliente (navegador da web)
Na imagem JavaScript ainda menor, o cliente V é, por sua vez, divisível como abaixo:
M - árvore HTML DOM
V - Apresentação visual
C - Funções de ouvinte de eventos (interação do usuário final e Ajax)
Portanto, é basicamente um M (M (M (MVC) C) C) C;)
Observe que alguns iniciadores e até mesmo alguns tutoriais —muito básicos— mesclam / copiam / nivelam as propriedades da entidade no bean gerenciado, o que efetivamente tornaria o controlador um modelo. Desnecessário dizer que este é um design pobre (ou seja, não é um design MVC limpo).
Os snippets de código nas seguintes respostas ilustram a abordagem MVC certa:
No livro The Definitive Guide to JSF in Java EE 8 , no capítulo 8 "Backing beans", página 276, o diagrama de Venn abaixo é usado para ilustrar a posição do backing bean no paradigma MVC dentro do contexto relevante para o desenvolvedor JSF . Aviso de isenção de direitos autorais: o livro foi escrito por mim e a imagem foi criada por mim.
<h:inputText value="#{register.username}">
vez de<h:inputText value="#{register.user.name}">
.M odel seria seu
ManagedBean
V iew seria
jsp
,XHTML
(bem você pode acomodar vários pontos de vista aqui)O controlador será
FacesServlet
Atualização, espero que esta imagem ajude mais
fonte
FacesServlet
for um controlador não posso estendê-lo. Não posso ter meus próprios controladores ... Concordo com Shervin que Managed Beans é o controlador. Shervin, que tal postar sua própria resposta alternativa?FacesServlet
que está controlando.O servlet faces gerencia o ciclo de vida das faces, então, nesse sentido, é o controlador combinado com seu próprio código que pode ser chamado durante cada fase do ciclo de vida
http://www.java-samples.com/images/jsf-lifecycle.gif
fonte
Java Server Faces é uma estrutura web MVC onde os componentes MVC são os seguintes,
Modelo - é a classe de bean gerenciado anotada com @ManagedBean, que possui propriedades para conter os dados e respectivos getters e setters. A classe de bean gerenciado também pode conter a lógica de negócios. Eles também são conhecidos como beans de apoio, que podem ter escopos diferentes, como solicitação, sessão, aplicativo.
Exibir - A interface do usuário mostrada ao cliente, ou seja, arquivos .xhtml. Ele obtém os dados dos beans gerenciados e é processado como a resposta.
Controller - javax.servlet.webapp.FacesServlet é a classe do controlador centralizado que é basicamente um servlet. Qualquer solicitação que chega ao JSF primeiro vai para o controlador FacesServlet. Ao contrário do JSP no qual escrevemos nossa própria classe de controlador, no JSF o servlet do controlador é uma parte fixa do framework e não o escrevemos.
Fluxo MVC-
fonte