I am reading on JSF and I feel rather confused why JSF is a MVC framework (or atleast which parts belongs to which "letter").
I looked at this question: What components are MVC in JSF MVC framework?
I read there if you don't look at it in an aggregated view the model is your entity, view is your XHTML code and controller is the managed bean. Hmm...Ok, but doesn't the view very often depend on carrying out further business logic calls which returns a set of entities for example, does the description still fit?
One book I read described it as managed beans is the some kind of "message" bringer that the Faces Servlet (Controller) use to invoke the business layer (Model) and then the XHTML code is the view.
There are so many explanations and differences so I don't know which or how to understand it.
The JSF framework implements the Model-View-Controller (MVC) architecture ensuring that applications are well designed and easier to maintain.. Encapsulates the information (data) and the methods to operate on that information (business logic). Managed beans define the model of a JSF application.
JSF technology is a framework for developing, building server-side User Interface Components and using them in a web application. JSF technology is based on the Model View Controller (MVC) architecture for separating logic from presentation.
JSF stands for JavaServer Faces. It is a framework that helps you build user interfaces for JavaServer applications. It provides the standard set of tools for creating a user interface. JavaServer Faces (JSF) is an MVC web framework.
Part of the reason why it's often not entirely clear in JSF and many other web frameworks which parts of it correspond to which part of MVC, is that the MVC pattern was originally devised for desktop applications.
In a desktop application, the nodes M, V and C are a maximum connected graph, meaning each part can communicate with every other part. E.g. if the model changes, it can push this change to the view. This is particularly visible in case there are multiple representations of the view in a desktop application. Change one, and see the other update in real-time.
Due to the client/server and request/response nature of web applications, classic MVC doesn't map 1:1 to most web frameworks.
Specifically, in JSF the mapping is as follows:
UIComponent
s and Facelets respectively.FacesServlet
).Especially the last part is frequently not well understood: In JSF you don't implement a controller. Consequently, a backing bean or any other kind of managed bean is NOT the controller.
The first part (the model) is also not always clearly understood. Business logic may be implemented by EJB and JPA, but from the point of view of JSF everything that is referenced by a value binding is the model. This is also where the name of one of the JSF life-cycle phases comes from: Update Model
. In this phase JSF pushes data from the UI components into the model. In that sense, (JSF) managed beans are thus the model.
Although JSF itself doesn't explicitly define the concept, there is an often recurring and specific usage of managed beans called the backing bean.
For JSF a backing bean is still the model, but practically it's a plumbing element that sits in the middle of the Model, View and Controller. Because it performs some tasks that may be seen as some controller tasks, this is often mistaken to be the controller. But, as explained before this is not correct. It can also perform some model tasks and occasionally do some view logic as well.
See also:
In a minimalist form, it's:
JSF gives you the power to control your requests/responses. The way you create model/view it's not directly connected to the framework MVC concept. It's just a matter of choice. The MVC concept is related to code organization.
Analogously Struts is a MVC framework, but it works mainly as a controller.
I think I help you to better clarify your idea.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With