44 votes

Qu'est-ce que STATE_SAVING_METHOD paramètre en JSF 2.0

Je ne suis pas en mesure de comprendre quelle est la fonction de cette ligne dans web.xml

<context-param>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>server</param-value>
</context-param>

J'ai lu que le NetBeans par défaut est client. J'ai juste été confronté à un problème que j'ai beaucoup de haricots dans mon application, et l' <param-value> a été fixé pour le client, donc je recevais

java.io.NotSerializableException

erreur bien que mes haricots ont été Serializable (c'est à dire de mettre en œuvre l'interface Serializable.). Mes haricots ont été dans @ViewScope. Mais quand je l'ai changé de serveur, les choses vont travailler. Pourquoi? Quelle est la différence quand j'utilise le client et le serveur. Quelqu'un peut-il m'expliquer avec l'aide d'un exemple.

Merci

57voto

BalusC Points 498232
java.io.NotSerializableException

Ce genre d'exception a généralement un message dans la cause racine qui indique le nom de classe entièrement qualifié de la classe qui n'est pas mise en œuvre d' Serializable. Vous devez faire attention à ce message d'apprendre à propos de la classe qu'il est en train de parler et puis de le laisser mettre en oeuvre Serializable en conséquence.

Souvent, en faisant seulement votre managed bean classes sérialisables n'est pas toujours suffisant. Vous devez également vous assurer que chacun de ses propriétés est également serializable. La plupart des types standard comme String, Long, etc mettre en œuvre tous déjà Serializable. Mais (personnalisé) des types complexes tels que imbriqués les haricots, les entités ou les Ejb doit également être sérialisable. Si quelque chose n'est pas vraiment réalisable que Serializable, comme InputStream, alors vous devez soit la refonte du modèle ou de la faire transient (et de garder à l'esprit qu'il sera null après la désérialisation).


Quelle est la différence quand j'utilise le client et le serveur

Tout d'abord, quelques informations de fond: Pourquoi ne JSF nécessité de sauvegarder l'état des composants de l'INTERFACE utilisateur sur le serveur?

La principale différence technique est que l' client paramètre stocke l'ensemble de l'état d'affichage de la valeur de l' javax.faces.ViewState champ caché dans le code HTML généré en sortie et que l' server réglage de la stocke dans la session avec un IDENTIFIANT unique qui est la référence de la valeur de l' javax.faces.ViewState champ caché.

Donc, paramètre client augmente la bande passante du réseau, mais diminue le serveur de l'utilisation de la mémoire et de la mise en server t l'inverse. Paramètre client a toutefois supplémentaires avantage fonctionnel: il empêche ViewExpiredExceptions lorsque la session a expiré ou lorsque le client ouvre trop de points de vue.

13voto

praveen Points 313

javax.des visages.STATE_SAVING_METHOD paramètre est utilisé pour indiquer où l'état doit être enregistré.

Si vous voulez économiser de l'état sur le serveur (qui est la valeur par défaut dans le JavaServer Faces de référence de mise en œuvre), spécifiez le paramètre-valeur valeur en tant que serveur

Sinon pour économiser de l'état sur le côté client, nous pouvons spécifier client dans les param-value.

Si l'état est enregistré sur le client, l'état de l'ensemble de la vue est rendue à un champ caché sur la page.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X