Se puede decir que como Swing usa el modelo de eventos(en Swing se usa Listener).
Para resolver el MVC usaremos Servlets. JSF para la vista usa JSP+JSTL(Standard Tag Library) que usa la libreria de etiquetas:<h: html> .
Si en Spring existen los Beans y en JPA los Entitys; en JSF existen los ManagedBeans.
La anotación es @javax.faces.bean.ManagedBean y nos libra de tener que especificar esta información en el archivo XML faces-config.xml.Se puede nombrar o simplemente si se omite por defecto cogerá el nombre que le hallamos dado al archivo.
@ManagedBean(name="cargaCursoBean")
También permite definir el ámbito de las clases manejadas y las hace accesibles desde expresiones EL(Expresion Language).
@RequestScoped :Para el ámbito de petición.
@SessionScoped :Para el ámbito de sesión.
@ApplicationScoped:Para el ambito de aplicación.
@ViewScoped:Mantiene valores en la misma vista (dura mas que el Request y menos que el
Session)
@FlashScoped:Se usa para los mensajes a usuarios por ejemplo los mensajes de error.
También existe otra anotación que permite inyectar en una referencia una instancia de una clase que este siendo manejada en algún ámbito.
@ManagedProperty(value="{bean}")
Para que un objeto sea serializable basta con que implemente la interfaz Serializable. Esto se hace para poder convertir un objeto en bytes y poder ser luego recuperado.
public class SuperBeanDeCurso implements Serializable{
}
El managedBean se realiza creando una clase .java.
Para realizar la vista, nos creamos un .xhtml dentro de la carpeta war desde donde añadiremos las librerias para poder utilizar las etiquetas que nos harán falta para crear el jsf:
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head id="head">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>paso1!</title>
</h:head>
<h:body id="body">
<h1>PASO1</h1>
<h:messages></h:messages>
<h:form id="miForm">
<h:panelGroup id="panelito"
binding="#{paso1Bean.panel}">
AQUI EL PANEL
</h:panelGroup>
<h1>Edita Curso</h1>
<h:inputText binding="#{paso1Bean.texto}" id="tt"
value="#{wizardBean.curso.nombre}">
<f:ajax event="keyup"
render="botonNext tt panelito miForm"
listener="#{paso1Bean.escuchaInputAjax}"
/>
</h:inputText>
<h:commandButton value="next" id="botonNext"
disabled="#{empty wizardBean.curso.nombre}"
action="#{wizardBean.next}" ></h:commandButton>
<h:commandButton value="back"
action="#{wizardBean.back}" ></h:commandButton>
</h:form>
</h:body>
</html>
Para visualizarlo en la barra de direcciones lo pondremos con la extensión .jsf
Pasos interactivos:
Para usar Ajax se necesita la etiqueta <h:head> es donde se coloca internamente el Javascript.
Ajax lo que hace es que recarga parte de la página ahorrando el refresco de una página entera,para mostrar los resultados de un evento.
Cada evento <f:ajax> se coloca dentro del componente relacionado.
Para visualizarlo en la barra de direcciones lo pondremos con la extensión .jsf
Pasos interactivos:
Para usar Ajax se necesita la etiqueta <h:head> es donde se coloca internamente el Javascript.
Ajax lo que hace es que recarga parte de la página ahorrando el refresco de una página entera,para mostrar los resultados de un evento.
Cada evento <f:ajax> se coloca dentro del componente relacionado.