Está en la página 1de 8

Page Scope

Son variables que solo se ven dentro de nuestro JSP o Servlet mientras se está
ejecutando. Una vez construída y enviada la respuesta al navegador, desaparecen. Su
única utilidad es ayudarnos a construir la página que queremos mostrar en el
navegador. Dentro del JSP serían variables normales de JSP

Request Scope
Estas variables son más útiles. Las guardamos en la petición que nuestro JSP/Servlet
van a hacer a otro JSP/Servlet de nuestra aplicación, y este segundo JSP/Servlet
puede recogerlos para hacer cosas con ellas.
Dentro de un JSP tenemos predefinido un objeto request, y en él podríamos fijar estas
variables con setParameter() o con setAttribue(). y obtener los valores con los
getParameter() o getAttribute().

Session scope
Las variables Session scope se mantienen durante lo que se conoce como una sesión.
Cuando un usuario visita nuestra aplicación por primera vez, automáticamente se crea
una sesión para ese usuario. Esta sesión suele estar abierta mientras el usuario va
navegando por las páginas de nuestra aplicación y desaparece cuando el usuario deja
de navegar por nuestra aplicación durante un tiempo predeterminado.
Dicho de otra forma, cualquier valor que guardemos en la sesión del usuario, sólo será
visible por las páginas que visite ese usuario y mientras el usuario esté activo. Son las
variables típicas donde guardar si un usuario ha entrado en sesión con un usuario y
password, su nombre, su carrito de la compra si nuestra aplicación es de comercio
electrónico, etc.

Application scope
Estas variables son válidas para la aplicación. Permanecen hasta que repleguemos
nuestra aplicación del servidor o echemos el servidor abajo. Son compartidas para
todos los usuarios que visiten nuestra página web.
Dentro de un JSP podemos fijarlas o leerlas con la variable application que viene
predefinida en cualquier JSP, usando los conocidos métodos setAttribute() y
getAttribute().
Ejemplo 1:

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

@ManagedBean(name=usuarioBean")
@RequestScopedpublic class UsuarioBean {
private String nombre;
private String password;
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}

/** Creates a new instance of UsuarioBean */


public UsuarioBean() {
}
}

Index.xhtml (en medio del <h:body> </h:body>)

<h:form>
<h3>Introduzca su nombre y password</h3>
<table>
<tr>
<td>Nombre:</td>
<td>
<h:inputText value="#{usuarioBean.nombre}"/>
</td>
</tr>
<tr>
<td>password:</td>
<td>
<h:inputSecret value="#{usuarioBean.password}"/>
</td>
</tr>
</table>
<p>
<h:commandButton value="Aceptar" action="hola"/>
</p>
</h:form>
Hola.xhtml (en medio del <body>

<h:form>
nombre: <h:outputText value="#{usuarioBean.nombre}"/> <br/>
password: <h:outputText value="#{usuarioBean.password}"/>
</h:form>

*****************************************************************************

Ejemplo 2:

package jsf;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.model.SelectItem;
@ManagedBean(name="formBean1")
@RequestScoped
public class FormBean {

private SelectItem[] opciones = new SelectItem[]{


new SelectItem("01", "Opcion 1"),
new SelectItem("02", "Opcion 2"),
new SelectItem("03", "Opcion 3"),};
private String opcionActual;

public String getOpcionActual() {


return opcionActual;
}

public void setOpcionActual(String opcionActual) {


this.opcionActual = opcionActual;
}

public SelectItem[] getOpciones() {


return opciones;
}

public void setOpciones(SelectItem[] opciones) {


this.opciones = opciones;
}

/** Creates a new instance of FormBean */


public FormBean() {
}
}
Index.xhtml (en medio del <h:body> </h:body>)

Sin Ajax:

<h:form>
Opciones: <h:selectOneMenu
value="#{formBean1.opcionActual}">
<f:selectItems value="#{formBean1.opciones}"/>

</h:selectOneMenu>
<br/>
<h:commandButton value="Mostrar opcion"/><br/>
opcionActual:<h:outputText id="opcion"
value="#{formBean1.opcionActual}"/>
</h:form>

Con Ajax:

<h:form>
Opciones: <h:selectOneMenu
value="#{formBean1.opcionActual}">
<f:selectItems value="#{formBean1.opciones}"/>
<f:ajax render="opcion"/>
</h:selectOneMenu>
<br/>
<h:commandButton value="Mostrar opcion"/><br/>
opcionActual:<h:outputText id="opcion"
value="#{formBean1.opcionActual}"/>
</h:form>

Usando Template

Ejemplo 3:

Paso 1:

Para la clase EstudianteBean ( se hace generado con JSF Managed Bean, tipo Request)

package bean;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

@ManagedBean
@RequestScoped
public class EstudianteBean {

private String nombre;


private String apellido;
private String sexo;
private String ciudad;
private String materias[];

public EstudianteBean() {
}

public String getNombre() {


return nombre;
}

public void setNombre(String nombre) {


this.nombre = nombre;
}

public String getApellido() {


return apellido;
}

public void setApellido(String apellido) {


this.apellido = apellido;
}

public String getSexo() {


return sexo;
}

public void setSexo(String sexo) {


this.sexo = sexo;
}

public String getCiudad() {


return ciudad;
}

public void setCiudad(String ciudad) {


this.ciudad = ciudad;
}

public String[] getMaterias() {


return materias;
}

public void setMaterias(String[] materias) {


this.materias = materias;
}

}
de aqui generar set y get
Paso 2:

Generar Facelets Template, ponerle de nombre plantilla.xhtml, y guardalo en carpeta plantilla

Despues seleccionar el template

Paso 3:

Generar el Facelets Template Client, nombrarlo como EstudianteCliente.xhtml. Este utilizara el


Facelets Template pantilla.xhtml.

Dentro de EstudianteCliente.xhtml

En el Top, insertar:

<h2>Datos recibidos y procesados</h2>

En el Content insertar.

<h:panelGrid columns="2">

<h:outputLabel for="txtNombreCompleto" value="Nombre Completo: "/>


<h:outputLabel id="txtNombreCompleto" value="#{estudianteBean.nombre}
#{estudianteBean.apellido}"/>

<h:outputLabel for="txtSexo" value="Sexo: "/>


<h:outputLabel id="txtSexo" value="#{estudianteBean.sexo}"/>

<h:outputLabel for="txtCiudad" value="Ciudad: "/>


<h:outputLabel id="txtCiudad" value="#{estudianteBean.ciudad}"/>

<h:outputLabel value="Materias Favoritas: "/>


<h:dataTable value="#{estudianteBean.materias}" var="item">
<h:column>
<h:outputLabel value="#{item}"/>
</h:column>
</h:dataTable>

</h:panelGrid>
En el Botton insertar:

<h:form>
<h:commandLink action="index">pantalla de inicio</h:commandLink>
</h:form>

Paso 4:
Modificar el index.xhtml

Dentro de Body

<h2>Formulario de Estudiante</h2>
<h:form>
<h:panelGrid columns="3">

<h:outputLabel for="txtNombre" value="Nombre: "/>


<h:inputText id="txtNombre" label="Ingrese el Nombre" required="true"
value="#{estudianteBean.nombre}" />
<h:message for="txtNombre"/>

<h:outputLabel for="txtApellido" value="Apellido: "/>


<h:inputText id="txtApellido" label="Ingrese el Apellido" required="true"
value="#{estudianteBean.apellido}" />
<h:message for="txtApellido"/>

<h:outputLabel for="radioSexo" value="Sexo"/>


<h:selectOneRadio id="radioSexo" value="#{estudianteBean.sexo}">
<f:selectItem itemLabel="Masculino" itemValue="M" />
<f:selectItem itemLabel="Femenino" itemValue="F"/>
</h:selectOneRadio>
<h:message for="radioSexo"/>

<h:outputLabel for="cmbCiudad" value="Ciudad: "/>


<h:selectOneMenu id="cmbCiudad" label="Ciudad"
value="#{estudianteBean.ciudad}">
<f:selectItem itemLabel="Santa Ana" itemValue="Santa Ana"/>
<f:selectItem itemLabel="Ahuachapan" itemValue="Ahuachapan"/>
<f:selectItem itemLabel="Sonsonate" itemValue="Sonsonate"/>
</h:selectOneMenu>
<h:message for="cmbCiudad"/>

<h:outputLabel for="chkMaterias" value="Materias Favoritas"/>


<h:selectManyCheckbox id="chkMaterias" label="chkMaterias"
value="#{estudianteBean.materias}">
<f:selectItem itemLabel="Matematica" itemValue="Matematica"/>
<f:selectItem itemLabel="Lenguaje" itemValue="Lenguaje"/>
<f:selectItem itemLabel="Ciencia" itemValue="Ciencia"/>
<f:selectItem itemLabel="Sociales" itemValue="Sociales"/>
<f:selectItem itemLabel="Informatica" itemValue="Informatica"/>
</h:selectManyCheckbox>
<h:message for="chkMaterias"/>

<h:commandButton action="EstudianteCliente" value="Enviar datos"/>

</h:panelGrid>
</h:form>

Salida:

También podría gustarte