vida librerias fases explicacion elementos definicion ciclo beans java jsf model-view-controller

java - librerias - phaselistener jsf



Explicaciones contradictorias de MVC en JSF (1)

Lo que más me preocupa son los granos administrados aquí. ¿Son M o C?

La gente los considera M cuando se ven así:

@ManagedBean public class Bean { private String username; // +getter+setter private String password; // +getter+setter @Resource private DataSource dataSource; public void login() { try ( Connection connection = dataSource.getConnection(); PreparedStatement statement = connection.prepareStatement("SELECT * FROM User WHERE username = ? AND password = MD5(?)"); ) { statement.setString(1, username); statement.setString(2, password); try (ResultSet resultSet = statement.executeQuery()) { if (resultSet.next()) { // Login. } } } } // ... }

Pero las personas los consideran C cuando se ven así:

@ManagedBean public class Bean { private User user // +getter @EJB private UserService userService; public void login() { if (userService.find(user) != null) { // Login. } } // ... }

Esto también se menciona en la misma respuesta de MVC que encontraste:

Tenga en cuenta que algunos iniciadores e incluso algunos -muy básicos- tutoriales se mezclan / copian / aplanan las propiedades de la entidad en el bean administrado, lo que efectivamente haría que el controlador sea un modelo. Huelga decir que este es un diseño pobre (es decir, no es un diseño MVC limpio).

Ver también:

  • Nuestra página wiki JSF

Comenzaría a aprender JSF, pero primero me gustaría entender la gran imagen de esto como un marco MVC.

Hay varias respuestas con muchos votos ascendentes que explican cuáles son las capas MVC en JSF, pero generalmente se contradicen.

La respuesta de BalusC: ¿Qué componentes son MVC en el marco JSF MVC?

En la gran imagen arquitectónica, su propio código JSF es el V :

M - Capa de servicio / dominio empresarial (por ejemplo, EJB / JPA / DAO)
V - Su código JSF
C - FacesServlet

En la imagen del desarrollador, la arquitectura V es a su vez divisible de la siguiente manera:

M - Entidad
V - Facelets / página JSP
C - Bean administrado

La respuesta de Jigar Joshi en el mismo hilo:

M odel sería su ManagedBean

La vista sería jsp , XHTML (así puedes acomodar varios puntos de vista aquí)

C ontroller será FacesServlet

Aquí , otra vista sobre el problema:

En JSF no implementa un controlador. En consecuencia, un bean de respaldo o cualquier otro tipo de bean administrado NO es el controlador.

Otro más , no de Stackoverflow esta vez:

En JSF, el Controlador maestro siempre es el Servidor de Caras. Los subcontroladores se incorporan a las diversas implementaciones de etiquetas de elementos de control. Casi nunca se escribe código de controlador en JSF, porque está todo pre-suministrado. Por lo tanto, solo debe proporcionar las plantillas Ver (xhtml) y los Modelos (respaldos).

Mucha gente piensa que la lógica de acción en el respaldo de los beans los convierte en controladores. Esto es incorrecto. Un controlador es un componente cuyo único propósito en la vida es sincronizar el modelo y la vista. En JSF, esa tarea es realizada por FacesServlet y los controles. Puede tener validadores y convertidores que realicen funciones adjuntas, pero la sincronización (actualización) real es parte del núcleo de JSF.

Sé que MVC tiene muchas variantes dependiendo de si es una aplicación de escritorio, aplicación web, etc. por lo que es difícil definir MVC (trate de encontrar dos fuentes con la misma explicación de MVC).

Estoy más preocupado con los beans administrados aquí. ¿Son M o C? Los beans administrados aparentemente se utilizan para recuperar datos de la capa Modelo (la capa Modelo en el nivel más alto de abstracción, una gran imagen arquitectónica como en la respuesta de BalusC, es decir, EJB, JPA y DAO) y almacena el resultado para ser utilizado por la vista. La capa de controlador en MVC es la responsable de manejar los comandos de la vista, comunicarse con la capa del modelo y recuperar los datos de la capa del modelo. ¿El frijol administrado se usa para comunicarse con la capa del modelo? Sí, y también hace que los datos recuperados estén disponibles para la vista. Para mí, pertenece a la capa de controlador, no a un modelo, porque no contiene la lógica utilizada para recuperar los datos, o los datos en sí, sino que solo llama a los métodos de capa de modelo apropiados (eche un vistazo al ejemplo de código de BalusC ).

Entonces, ¿cuál es la fuente de mi confusión? ¿Podría alguien explicar esto de una vez por todas para que quede claro para los principiantes en JSF?