Napisałem prosty program w formularzach internetowych java, ale otrzymuję następujący błąd:
WELD-000072 Zarządzana fasola deklarująca zakres pasywacji musi mieć zdolność pasywacji. Bean: Managed Bean [klasa
BeanPakage.DemoBeans
] z kwalifikatorami [@Any
@Default
@Named
]
Czy ktoś może mi powiedzieć, skąd bierze się ten błąd?
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
źródło
źródło
@Interceptors
była dla mnie problemem!Musi być możliwy do serializacji.
Zobacz tę odpowiedź.
https://community.jboss.org/thread/179828
Pozdrawiam, Anders
źródło
Zrób
DemoBeans
serializację@Named("DemoBeans") @SessionScoped public class DemoBeans implements Serializable { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
źródło
Możesz również aktywować zachowanie pasywacji swojego ziarna za pomocą adnotacji:
@Stateful (passivationCapable = true)
W tym przypadku nie musisz implementować interfejsu Serializable.
Pozdrowienia. Jorge
źródło
Zweryfikuj import
(czasami netbeans używał innych z innych bibliotek)
Przykład. import javax.faces.view.ViewScoped; zmień go, importując javax.faces.bean.ViewScoped;
źródło
javax.faces.bean.ViewScoped
na korzyśćjavax.faces.view.ViewScoped
. Czy to oznacza, że muszę przejść przez wszystkie elementy bean z zakresem widoku i umożliwić ich serializację? Zjavax.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.
Spowodowany przez: org.jboss.weld.exceptions.DeploymentException: WELD-000072: Bean deklarujący pasywujący zakres musi mieć zdolność pasywacji. Bean: Managed Bean [klasa com.marcos.controller.PersonaBean] z kwalifikatorami [@Default @Named @Any]
Rozwiązałem to, najwyraźniej CDI, nie rozpoznałem fasoli, po prostu uściśliłem to
@Named @ViewScoped public class PersonaBean implements Serializable { @Inject private IPersonaService service; public void registrar() { try { service.registrar(null); }catch (Exception e) { e.printStackTrace(); } } }
rozwiązanie dla mnie:
@Named ("PersonaBean") @ViewScoped public class PersonaBean implements Serializable { @Inject private IPersonaService service; public void registrar() { try { service.registrar(null); }catch (Exception e) { e.printStackTrace(); } } }
źródło