Java Webフォームで簡単なプログラムを作成しましたが、次のエラーが表示されます。
WELD-000072非アクティブ化スコープを宣言するマネージドBeanは非アクティブ化可能でなければなりません。 Bean:マネージドBean [クラス
BeanPakage.DemoBeans
]修飾子付き[@Any
@Default
@Named
]
誰もこのエラーの原因を教えてもらえますか?
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;
}
}
Serializableインターフェースを実装することにより、Beanパッシベーションを有効にできます。
public class DemoBean implements Serializable { ... }
パッシベーション対応にはさらに多くの要件があることに注意してください。詳細については、溶接のドキュメントを参照してください。
CDI Beanがシリアル化可能であっても、エラーが残る場合があります。
WELD-000072 Managed bean declaring a passivating scope must be passivation capable
クラスの例:
@Named
@ConversationScoped
public class TransactionMatchController implements Serializable {
...
}
すべての@ Interceptorsも同様にseializableであることを確認してください。
@Interceptor
@Transactional
public class TransactionInterceptor implements Serializable {
...
}
DemoBeans
を作成シリアル化
@Named("DemoBeans")
@SessionScoped
public class DemoBeans implements Serializable
{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
アノテーションを使用して、Beanのパッシベーション動作をアクティブにすることもできます。
@Stateful(passivationCapable = true)
この場合、Serializableインターフェイスを実装する必要はありません。
よろしく。ホルヘ
インポートを確認する
(NetBeansが他のライブラリの他のライブラリを使用する場合がありました)
例。 import javax.faces.view.ViewScoped; import javax.faces.bean.ViewScoped;で変更します。
原因:org.jboss.weld.exceptions.DeploymentException:WELD-000072:非アクティブ化スコープを宣言するBeanは非アクティブ化可能でなければなりません。 Bean:マネージドBean [class com.marcos.controller.PersonaBean]と修飾子[@Default @Named @Any]
私はそれを解決しました、明らかにCDI、私は豆を認識しませんでした、私はそれをより明示的にしました
@Named
@ViewScoped
public class PersonaBean implements Serializable {
@Inject
private IPersonaService service;
public void registrar() {
try {
service.registrar(null);
}catch (Exception e) {
e.printStackTrace();
}
}
}
私のためのソリューション:
@Named ("PersonaBean")
@ViewScoped
public class PersonaBean implements Serializable {
@Inject
private IPersonaService service;
public void registrar() {
try {
service.registrar(null);
}catch (Exception e) {
e.printStackTrace();
}
}
}