J'ai écrit un programme simple dans des formulaires Web Java mais je reçois l'erreur suivante:
WELD-000072 Le bean géré déclarant une portée passivante doit être capable de passivation. Bean: Bean géré [classe
BeanPakage.DemoBeans
] avec des qualificatifs [@Any
@Default
@Named
]
Quelqu'un peut-il me dire d'où vient cette erreur?
import javax.enterprise.context.SessionScoped;
import javax.inject.Named;
@Named("DemoBeans")
@SessionScoped
public class DemoBeans {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
java
cdi
jboss-weld
christina
la source
la source
@Interceptors
était le problème pour moi!Il doit être sérialisable.
Voyez cette réponse.
https://community.jboss.org/thread/179828
Meilleur, Anders
la source
Rendre
DemoBeans
sérialisé@Named("DemoBeans") @SessionScoped public class DemoBeans implements Serializable { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
la source
Vous pouvez également activer le comportement de passivation de votre bean avec l'annotation:
@Stateful (passivationCapable = vrai)
Dans ce cas, vous n'avez pas besoin d'implémenter une interface sérialisable.
Cordialement. Jorge
la source
Vérifier les importations
(parfois, netbeans en a utilisé d'autres provenant d'autres bibliothèques)
Exemple. import javax.faces.view.ViewScoped; changez-le par import javax.faces.bean.ViewScoped;
la source
javax.faces.bean.ViewScoped
en faveur dejavax.faces.view.ViewScoped
. Cela signifie-t-il que je dois parcourir tous mes beans à portée de vue et les rendre sérialisables? De lajavax.faces.bean.ViewScoped
javadoc:@deprecated This has been replaced by {@code javax.faces.view.ViewScoped}. The functionality of this corresponding annotation is identical to this one, but it is implemented as a CDI custom scope.
Causé par: org.jboss.weld.exceptions.DeploymentException: WELD-000072: Le bean déclarant une portée passivante doit être capable de passivation. Bean: Bean géré [classe com.marcos.controller.PersonaBean] avec des qualificatifs [@Default @Named @Any]
Je l'ai résolu, apparemment CDI, je n'ai pas reconnu le haricot, je l'ai juste rendu plus explicite
@Named @ViewScoped public class PersonaBean implements Serializable { @Inject private IPersonaService service; public void registrar() { try { service.registrar(null); }catch (Exception e) { e.printStackTrace(); } } }
la solution pour moi:
@Named ("PersonaBean") @ViewScoped public class PersonaBean implements Serializable { @Inject private IPersonaService service; public void registrar() { try { service.registrar(null); }catch (Exception e) { e.printStackTrace(); } } }
la source