J'ai écrit un programme simple dans des formulaires Web Java mais je reçois le message d'erreur suivant:
WELD-000072 Le bean géré déclarant une étendue passivante doit être capable de passivation. Bean: Bean Managed [classe
BeanPakage.DemoBeans
] avec qualificateurs [@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;
}
}
Vous pouvez rendre votre passivation bean capable en implémentant l'interface Serializable:
public class DemoBean implements Serializable { ... }
Notez qu'il existe davantage d'exigences pour être capable de passivation. Reportez-vous à la documentation Weld pour plus d'informations.
L'erreur peut subsister même si le bean CDI est sérialisable:
WELD-000072 Managed bean declaring a passivating scope must be passivation capable
Exemple de classe:
@Named
@ConversationScoped
public class TransactionMatchController implements Serializable {
...
}
Assurez-vous que tous les @Interceptors sont également lisibles:
@Interceptor
@Transactional
public class TransactionInterceptor implements Serializable {
...
}
Make DemoBeans
serialized
@Named("DemoBeans")
@SessionScoped
public class DemoBeans implements Serializable
{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Vous pouvez également activer le comportement de passivation de votre bean avec l'annotation:
@Stateful (passivationCapable = true)
Dans ce cas, vous n'avez pas besoin d'implémenter l'interface Serializable.
Cordialement ..__ Jorge
Vérifier les importations
(parfois, les netbeans utilisaient d'autres bibliothèques)
Exemple. importer javax.faces.view.ViewScoped; changez-le en important javax.faces.bean.ViewScoped;
Causé par: org.jboss.weld.exceptions.DeploymentException: WELD-000072: Le bean déclarant une étendue passivante doit être capable de passivation. Bean: Bean géré [classe com.marcos.controller.PersonaBean] avec qualificatifs [@Default @Named @Any]
Je l'ai résolu, apparemment CDI, je n'ai pas reconnu le haricot, je viens de le rendre 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();
}
}
}