librerias - ¿Qué es el parámetro STATE_SAVING_METHOD en JSF 2.0?
primefaces (2)
No puedo entender cuál es la función de esta línea en web.xml
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>server</param-value>
</context-param>
He leído que el valor predeterminado de NetBeans es cliente . Acabo de enfrentar un problema que tengo muchos beans en mi aplicación, y el <param-value>
se configuró para el cliente, así que estaba recibiendo
java.io.NotSerializableException
error aunque mis beans eran serializables (es decir, implementaron la interfaz serializable). Mis frijoles estaban en @ViewScope . Pero cuando lo cambié al servidor, las cosas van a funcionar. ¿Por qué? ¿Cuál es la diferencia cuando uso cliente y servidor? ¿Alguien puede explicarme con la ayuda de un ejemplo?
Gracias
java.io.NotSerializableException
Este tipo de excepción generalmente tiene un mensaje en la causa raíz que muestra el nombre de clase completamente calificado de la clase que no implementa Serializable
. Debe prestar mucha atención a este mensaje para saber de qué clase está hablando y luego dejar que se implemente Serializable
consecuencia.
A menudo, no solo basta con que las clases de beans administrados sean serializables. También debe asegurarse de que cada una de sus propiedades también sea serializable. La mayoría de los tipos estándar como String
, Long
, etc. implementan todos ya Serializable
. Pero los tipos complejos (personalizados), como beans anidados, entidades o EJB, también deben ser serializables. Si algo no es realmente implementable como Serializable
, como InputStream
, entonces debe rediseñar el modelo o hacerlo transient
(y tener en cuenta que será null
después de la deserialización).
¿Cuál es la diferencia cuando uso cliente y servidor?
Primero, algunos datos de fondo: ¿Por qué JSF guarda el estado de los componentes de IU en el servidor?
La principal diferencia técnica es que la configuración del client
almacena el estado completo de la vista como el valor del campo de entrada oculto javax.faces.ViewState
en la salida HTML generada y que la configuración del server
almacena en la sesión junto con una ID única que está en a su vez, se hace referencia al valor del campo de entrada oculto javax.faces.ViewState
.
Por lo tanto, la configuración para el client
aumenta el uso del ancho de banda de la red, pero disminuye el uso de la memoria del servidor y la configuración para el server
es al revés. Sin embargo, la configuración para el client
tiene una ventaja funcional adicional: previene ViewExpiredException
s cuando la sesión ha caducado o cuando el cliente abre demasiadas vistas.
javax.faces.STATE_SAVING_METHOD
parámetro javax.faces.STATE_SAVING_METHOD
se usa para especificar dónde se debe guardar el estado.
Si desea guardar el estado en el servidor (que es el valor predeterminado en la implementación de referencia de JavaServer Faces), especifique el param-value
valor param-value
como server
.
De lo contrario, para guardar el estado en el lado del cliente, podemos especificar el client
en el param-value
.
Si el estado se guarda en el cliente, el estado de la vista completa se representa en un campo oculto en la página.