Vue JSF portée au Printemps
Est là toute la portée comme JSF @ViewScoped
au Printemps 3.0? J'ai une application utilisant JSF+de Printemps où la sauvegarde de haricots sont gérés par Spring. Je n'ai pas trouvé portée comme JSF vue étendue au Printemps. J'ai vu le blog Le portage de JSF 2.0 ViewScope de Printemps 3.0, mais il ne fonctionne pas pour moi.
Voici ma tentative sur la coutume de Printemps portée:
import java.util.Map;
import javax.faces.context.FacesContext;
import org.springframework.beans.factory.ObjectFactory;
import org.springframework.beans.factory.config.Scope;
/**
* Implements the JSF View Scope for use by Spring. This class is registered as a Spring bean with the CustomScopeConfigurer.
*/
public class ViewScope implements Scope {
public Object get(String name, ObjectFactory<?> objectFactory) {
System.out.println("**************************************************");
System.out.println("-------------------- Getting objects For View Scope ----------");
System.out.println("**************************************************");
if (FacesContext.getCurrentInstance().getViewRoot() != null) {
Map<String, Object> viewMap = FacesContext.getCurrentInstance().getViewRoot().getViewMap();
if (viewMap.containsKey(name)) {
return viewMap.get(name);
} else {
Object object = objectFactory.getObject();
viewMap.put(name, object);
return object;
}
} else {
return null;
}
}
public Object remove(String name) {
System.out.println("**************************************************");
System.out.println("-------------------- View Scope object Removed ----------");
System.out.println("**************************************************");
if (FacesContext.getCurrentInstance().getViewRoot() != null) {
return FacesContext.getCurrentInstance().getViewRoot().getViewMap().remove(name);
} else {
return null;
}
}
public void registerDestructionCallback(String name, Runnable callback) {
//Do nothing
}
public Object resolveContextualObject(String key) { return null;
}
public String getConversationId() {
return null;
}
}
application-context.xml
:
<bean class="org.springframework.beans.factory.config.CustomScopeConfigurer">
<property name="scopes">
<map>
<entry key="view">
<bean class="com.delta.beans.ViewScope"/>
</entry>
</map>
</property>
</bean>
Ce poste de la mine peut aider : stackoverflow.com/q/12884822/1055089
Oui, Mais l'application ne fonctionne pas dans mon code
pourriez-vous s'il vous plaît poster le code?? J'ai utilisé le même dans mon application, et cela a fonctionné. Je suis à l'aide de JSF2 + Ressort 3...
oui, je suis en utilisant le même JSF2 + Ressort 3 ... j'ai collé ..
Pouvez-vous dire ce qui ne fonctionne pas? Juste pour s'assurer que votre code fonctionne avec @Scope("demande")?
Oui, Mais l'application ne fonctionne pas dans mon code
pourriez-vous s'il vous plaît poster le code?? J'ai utilisé le même dans mon application, et cela a fonctionné. Je suis à l'aide de JSF2 + Ressort 3...
oui, je suis en utilisant le même JSF2 + Ressort 3 ... j'ai collé ..
Pouvez-vous dire ce qui ne fonctionne pas? Juste pour s'assurer que votre code fonctionne avec @Scope("demande")?
OriginalL'auteur khan | 2012-10-22
Vous devez vous connecter pour publier un commentaire.
Récemment, j'ai créé artefact maven qui permettra de résoudre ce problème.
Voir mon github javaplugs/printemps-jsf référentiel.
OriginalL'auteur rumatoest
J'ai fait quelque chose comme ça, sans Portage de fève de Printemps. C'est de travailler pour moi.
Je ne suis pas très sûr de
Spring AOP
. Parce que j'ai testé cette fonction à mon exigence à l'époque. Mais j'ai euSpring core
qui a parfaitement fonctionné pour moi.Ah, je vois. Probablement vous avez converti votre JSF solution à une solution de Printemps en ajoutant le SpringBeanFacesELResolver à faces.config. Si oui, AOP devrait fonctionner correctement.
Néanmoins, il n'est pas d'une véritable vue d'étendue de Printemps bean. Vous avez dit vous-même: la classe
Bean
est vue étendue, mais le printemps bean il utilise appartient à un champ d'application différent. Selon le commentaire, c'est un singleton, et vous l'avez appelé un service, il est donc probablement apatrides. La plupart des développeurs sont contenu avec votre solution. Mais ce n'est pas le même: Le Printemps bean ne faut pas stocker l'état spécifiques à l'affichage.Je ne suis pas sûr de l'endroit où il est le stockage de l'etat liées à la vue. Je suis juste en train de le printemps bean qui va nulle au moment de la Sérialisation, parce que c'est marqué que transitoire car
@viewscope
veut que tous dépendants des grains àSerialized
. Et une chose de plusSingletons
ne sont pas apatrides.OriginalL'auteur SRy
OriginalL'auteur Alfaville
OriginalL'auteur Alfaville
J'ai essayé un travail autour de la vue Jsf bean problème de fuite de mémoire pour les deux Jsf 2.1 & Jsf 2.2. Essayez le code dans le lien suivant Fuite de mémoire avec ViewScoped bean?. Il sera clairement le point de vue de haricot dans la session lors de la navigation à la page suivante.
OriginalL'auteur Sathish Kumar