在JSF页面上,每个句柄文件上载事件都会创建一个新的Bean实例。好像它每次都像一个新客户。此外,Web浏览器似乎也是一个不同的客户端。
那么,这些FileUploadEvents是否只有来自一个浏览器的实例化只有一个Bean?
我正在尝试使用CDI而不是@ViewScoped JSF bean。
的index.xhtml:
<p:fileUpload fileUploadListener="#{bean.handleFileUpload}"/>
豆:
@Named
@ConversationScoped
public class Bean {
//code
@Inject
Conversation conversation;
public void HandleFileUpload(FileUploadEvent fileUploadEvent){
if(conversation.isTransient()){ //Always true :(
conversation.begin();
}
//Beans get created each time it needs to access this method.
}
答案 0 :(得分:2)
我误解了 @ConversationScoped 。
对话应该在开始访问给定链接之前开始。
意味着如果一个人访问一个链接,之前没有开始对话,那么该bean的行为类似于@RequestScoped bean。因此,刷新附加到 @ConversationScoped 的一个页面将创建&amp;每次都要毁灭。
解决方案是在访问链接之前开始对话,因此?cid = 10 将包含在网址中。