simplemente no lo utiliza vista/sesión en ámbito granos (por lo que sólo utilizan solicitud o una aplicación en ámbito frijoles) y el estado ajustar el horario a client
en lugar de (predeterminado) server
estableciendo el siguiente parámetro de contexto en web.xml
.
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
Entonces JSF no creará la sesión y almacenará el estado de la vista en un campo de entrada oculto con el nombre javax.faces.ViewState
en forma siempre que sea necesario.
El costo de crear y administrar las sesiones es bastante despreciable. Además, aún tiene que sacrificar el costo de (de) serializar el estado de la vista y el ancho de banda de la red cuando se usa el ahorro de estado de la vista lateral del cliente.
actualización como por su comentario:
@BalusC Sí, esto podría ser una solución global. Pero necesito este método solo en esta página pública. En otras páginas quiero el método de ahorro de estado del lado del servidor.
Ah right. Lo siento, no veo ninguna forma agradable en JSF/Facelets para deshabilitar la sesión o cambiar el estado de la vista guardando por solicitud. Consideraría utilizar un HTML simple <form>
en lugar de un JSF <h:form>
, dejarlo enviar a otra página JSF y hacer uso de @ManagedProperty
en el bean asociado con la página JSF. P.ej.
<form action="register.jsf" method="post">
<input type="text" name="username" />
<input type="password" name="password" />
<input type="submit" />
</form>
con
@ManagedBean
@RequestScoped
public class Register {
@ManagedProperty(value="#{param.username}")
private String username;
@ManagedProperty(value="#{param.password}")
private String password;
@PostConstruct
public void init() {
// Do your thing here.
System.out.println("Submitted username/password: " + username + "/" + password);
}
// ...
}
@BalusC Agregado por qué en cuestión. – angelcervera