Java错误:WELD-000072声明钝化范围的托pipebean必须具有钝化function
我写了一个简单的程序在Java Web窗体,但我收到以下错误:
WELD-000072声明钝化范围的托pipebean必须具有钝化function。 Bean:受限Bean [带有限定符的类BeanPakage.DemoBeans] [@Any @Default @Named]
谁能告诉我这个错误来自哪里?
我的代码是:
package BeanPakage; 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 =真)
在这种情况下,你不需要实现Serializable接口。
问候。 乔治
validation导入
(有时netbeans使用别人库中的其他人)
例。 import javax.faces.view.ViewScoped; 通过导入javax.faces.bean.ViewScoped更改它;